Javaでソート
一、TreeMapを利用して並べ替え、コードは以下の通りである.
その結果、ソート出力に問題はなく、小さな出力から大きな出力までであることが分かった.ただし、ソート値が同じデータがある場合は、データオーバーライドが発生します.
二、Collections.sortを用いてソートすると、mapの上書き問題は発生しません.コードは以下の通りです.
java.util.SortedMap<Double, scala.Tuple2<String,String>> topN = new java.util.TreeMap<Double, scala.Tuple2<String,String>>();
topN.put(-0.223,new scala.Tuple2<String,String>("1","1"));
topN.put(-0.5239,new scala.Tuple2<String,String>("2","1"));
topN.put(-0.323,new scala.Tuple2<String,String>("3","1"));
topN.put(-0.423,new scala.Tuple2<String,String>("4","1"));
topN.put(-0.523,new scala.Tuple2<String,String>("5","1"));
topN.put(-0.623,new scala.Tuple2<String,String>("6","1"));
for (Map.Entry<Double, scala.Tuple2<String,String>> entry : topN.entrySet()) {
System.out.println(entry.getValue()._1);
}
その結果、ソート出力に問題はなく、小さな出力から大きな出力までであることが分かった.ただし、ソート値が同じデータがある場合は、データオーバーライドが発生します.
二、Collections.sortを用いてソートすると、mapの上書き問題は発生しません.コードは以下の通りです.
List<Tuple2<Double,Tuple2<String,String>>> listA = new ArrayList<Tuple2<Double,Tuple2<String,String>>>();
listA.add(new Tuple2<Double,Tuple2<String,String>>(-0.223,new scala.Tuple2<String,String>("1","1")));
listA.add(new Tuple2<Double,Tuple2<String,String>>(-0.5239,new scala.Tuple2<String,String>("2","1")));
listA.add(new Tuple2<Double,Tuple2<String,String>>(-0.323,new scala.Tuple2<String,String>("3","1")));
listA.add(new Tuple2<Double,Tuple2<String,String>>(-0.423,new scala.Tuple2<String,String>("4","1")));
listA.add(new Tuple2<Double,Tuple2<String,String>>(-0.523,new scala.Tuple2<String,String>("5","1")));
listA.add(new Tuple2<Double,Tuple2<String,String>>(-0.623,new scala.Tuple2<String,String>("6","1")));
Collections.sort(listA, new Comparator<Tuple2<Double,Tuple2<String,String>>>() {
public int compare(Tuple2<Double,Tuple2<String,String>> arg0, Tuple2<Double,Tuple2<String,String>> arg1) {
Double d0=arg0._1;
Double d1=arg1._1;
return d0.compareTo(d1);
}
});
for (Tuple2<Double,Tuple2<String,String>> p : listA) {
System.out.println(p._2._1);
}