(Java)拡張for文とソート

メモ

  • 配列
int[] array = {3,2,5,1,4};
for(int i : array)	System.out.print(i+" ");
Arrays.sort(array);
System.out.println();
for(int i : array)	System.out.print(i+" ");

出力

3 2 5 1 4 
1 2 3 4 5
List<Character> al = new ArrayList<Character>();
al.add('C'); al.add('B'); al.add('E'); al.add('A'); al.add('D');
for(char c : al)	System.out.print(c+" ");
Collections.sort(al);
System.out.println();
for(char c : al)	System.out.print(c+" ");

出力

C B E A D 
A B C D E
  • HashSet
Set<Double> set = new HashSet<Double>();
set.add(3.); set.add(2.); set.add(5.); set.add(1.); set.add(4.); set.add(5.);//重複は後に入力したデータが残る
for(double d : set)	System.out.print(d+" ");
set = new TreeSet<Double>(set);
System.out.println();
for(double d : set)	System.out.print(d+" ");

出力

3.0 2.0 1.0 4.0 5.0 
1.0 2.0 3.0 4.0 5.0 

これなら最初からTreeSet使ったほうがいいかも。

  • HashMap
Map<String,Integer> hm = new HashMap<String,Integer>();
hm.put("C",1); hm.put("B",2); hm.put("E",3); hm.put("A",4); hm.put("D",5); 
for(String s : hm.keySet())	System.out.print(s+":"+hm.get(s)+" ");
hm = new TreeMap<String,Integer>(hm);
System.out.println();
for(String s : hm.keySet())	System.out.print(s+":"+hm.get(s)+" ");

出力

D:5 E:3 A:4 B:2 C:1 
A:4 B:2 C:1 D:5 E:3 

これも最初からTreeMap使ったほうがいいかも。(※HashMapのデータアクセスについて)


拡張for文があるとIteratorを使わなくて良いので楽ですね。
拡張forのメモを兼ねているので上のような出力方法にしていますが、下のようにまとめて書くこともできます。

System.out.println(Arrays.toString(array));
System.out.println(al);
System.out.println(set);
System.out.println(hm);

出力

[1, 2, 3, 4, 5]
[A, B, C, D, E]
[1.0, 2.0, 3.0, 4.0, 5.0]
{A=4, B=2, C=1, D=5, E=3}