回答編集履歴

2

追記

2021/09/11 14:30

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -55,3 +55,115 @@
55
55
  System.out.println(foo);
56
56
 
57
57
  ```
58
+
59
+ **追記**
60
+
61
+ TreeMap がダメだったので、数字の切り出しと数値への変換を最初に行ったものの
62
+
63
+ ArrayList をソートしてみました。
64
+
65
+ 2つの数値の差は int の範囲に収まる程度に小さいものとします。
66
+
67
+ 数値が同じ場合は、文字列の降順になるようにしました。
68
+
69
+ ```Java
70
+
71
+ import java.util.Collections;
72
+
73
+ import java.util.ArrayList;
74
+
75
+
76
+
77
+ public class Main {
78
+
79
+ public static void main(String[] args){
80
+
81
+
82
+
83
+ ArrayList<String> foo = new ArrayList<>();
84
+
85
+ foo.add("12:/search/?c=Games+Computers");
86
+
87
+ foo.add("5:/search/?c=Games+Computers");
88
+
89
+ foo.add("1:/search/?c=Games+Computers");
90
+
91
+ foo.add("13:/search/?c=Games+Computers");
92
+
93
+ foo.add("130:/search/?c=Games+Computers");
94
+
95
+ foo.add("7:/abc/?c=Games+Computers");
96
+
97
+ foo.add("7:/xyz/?c=Games+Computers");
98
+
99
+
100
+
101
+ ArrayList<E> bar = new ArrayList<>();
102
+
103
+ for (String s : foo) bar.add(new E(s));
104
+
105
+
106
+
107
+ Collections.sort(bar);
108
+
109
+
110
+
111
+ for (E e : bar) System.out.println("(\"" + e.o + "\");");
112
+
113
+ }
114
+
115
+ }
116
+
117
+
118
+
119
+ class E implements Comparable<E> {
120
+
121
+ int n;
122
+
123
+ String o, s[];
124
+
125
+
126
+
127
+ E(String str) {
128
+
129
+ o = str;
130
+
131
+ s = o.split(":");
132
+
133
+ n = Integer.parseInt(s[0]);
134
+
135
+ }
136
+
137
+
138
+
139
+ public int compareTo(E e) {
140
+
141
+ int d = e.n - n;
142
+
143
+ return d == 0 ? e.s[1].compareTo(s[1]) : d;
144
+
145
+ }
146
+
147
+ }
148
+
149
+ ```
150
+
151
+ 実行結果
152
+
153
+ ```text
154
+
155
+ ("130:/search/?c=Games+Computers");
156
+
157
+ ("13:/search/?c=Games+Computers");
158
+
159
+ ("12:/search/?c=Games+Computers");
160
+
161
+ ("7:/xyz/?c=Games+Computers");
162
+
163
+ ("7:/abc/?c=Games+Computers");
164
+
165
+ ("5:/search/?c=Games+Computers");
166
+
167
+ ("1:/search/?c=Games+Computers");
168
+
169
+ ```

1

誤字の修正

2021/09/11 14:30

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -1,4 +1,4 @@
1
- Comparetor を使うと、比較のたびに数字の切り出しと数値への変換が起こるので
1
+ Comparator を使うと、比較のたびに数字の切り出しと数値への変換が起こるので
2
2
 
3
3
  データ数が多い場合遅くなるかもしれません。
4
4