回答編集履歴

2

メソッドシグナチャーを変更

2017/06/13 02:47

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -1,20 +1,22 @@
1
- int[][]は二次元配列ですね。それに適用できるArrays#sortメソッドは以下の2になります。
1
+ int[][]は二次元配列ですね。それに適用できるArrays#sortメソッドは概ね以下の2種類(Comparatorを指定しないものとするもの)になります。
2
2
 
3
3
 
4
4
 
5
+ (1-1) static void sort(Object[] a)
6
+
5
- (1) static <T extends Comparable<? super T>> void sort(T[] a)
7
+ (1-2) static <T extends Comparable<? super T>> void parallelSort(T[] a)
6
8
 
7
9
  指定されたオブジェクト配列を、その要素の自然順序付けに従って昇順にソートします。
8
10
 
9
11
 
10
12
 
11
- (2) static <T> void sort(T[] a, Comparator<? super T> cmp)
13
+ (2-1) static <T> void sort(T[] a, Comparator<? super T> cmp)
14
+
15
+ (2-2) static <T> void parallelSort(T[] a, Comparator<? super T> cmp)
12
16
 
13
17
  指定されたコンパレータが示す順序に従って、指定されたオブジェクトの配列をソートします。
14
18
 
15
19
 
16
-
17
- (また上記と同じ考え方で並列処理ができるparallelSortという名前のメソッドもあります。)
18
20
 
19
21
 
20
22
 
@@ -26,7 +28,7 @@
26
28
 
27
29
 
28
30
 
29
- さて、T(本ケースではT=int[])は自然順序付けができるなら(1)が適用できます。一般に参照型であれば
31
+ さて、T(本ケースではT=int[])は自然順序付けができるなら(1-*)が適用できます。一般に参照型であれば
30
32
 
31
33
 
32
34
 
@@ -35,6 +37,8 @@
35
37
 
36
38
 
37
39
  のように「このクラスは比較できますよ」という定義になっているものに対して「自然順序付けされている」と考えるとよいと思います。ここでT(=int[])は自然順序付けされていません。intの配列の大小をどのように決めるかはJavaでは「決まっていない」からです。
40
+
41
+ **parallelSortの方(1-2)は「ComparableであるようなTを指定することが強制される」ので、比較できない型を指定していることにコンパイル時に気づけますが(1-1)を使うと実行してみないと気づけないという落とし穴があります**
38
42
 
39
43
 
40
44
 

1

parallelSortではなくsortに変更

2017/06/13 02:47

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -2,15 +2,19 @@
2
2
 
3
3
 
4
4
 
5
- (1) static <T extends Comparable<? super T>> void parallelSort(T[] a)
5
+ (1) static <T extends Comparable<? super T>> void sort(T[] a)
6
6
 
7
7
  指定されたオブジェクト配列を、その要素の自然順序付けに従って昇順にソートします。
8
8
 
9
9
 
10
10
 
11
- (2) static <T> void parallelSort(T[] a, Comparator<? super T> cmp)
11
+ (2) static <T> void sort(T[] a, Comparator<? super T> cmp)
12
12
 
13
13
  指定されたコンパレータが示す順序に従って、指定されたオブジェクトの配列をソートします。
14
+
15
+
16
+
17
+ (また上記と同じ考え方で並列処理ができるparallelSortという名前のメソッドもあります。)
14
18
 
15
19
 
16
20