LinkedHashMapにStringとIntegerが含まれていることを前提に、LinkedHashMapの値に基づいてソートする方法を教えてください。ですから、IntegersであるValuesに基づいてソートする必要があります。 ありがとうございますLinkedHashMapをソートする
答えて
これは、今のJava 8のストリームとかなり簡単です:あなたは、ソートする中間マップは必要ありません。
map.entrySet().stream()
.sorted(Map.Entry.comparingByValue())
.forEach(entry -> ...);
LinkedHashMap
はただ挿入注文を維持しています。値に基づいてソートする場合は、独自のcomparator
を作成する必要があります。
List<Map.Entry<String, Integer>> entries =
new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
Collections.sort(entries, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> a, Map.Entry<String, Integer> b){
return a.getValue().compareTo(b.getValue());
}
});
Map<String, Integer> sortedMap = new LinkedHashMap<String, Integer>();
for (Map.Entry<String, Integer> entry : entries) {
sortedMap.put(entry.getKey(), entry.getValue());
}
まあまあ、私はまったく同じコードを書いていました! :)最後の部分を除いて、私はOPが実際にそれらを地図に戻す必要があるとは思わない。 –
ありがとうございました。非常に便利なコード – Ramin
ニースの答え。降順で並べ替える必要があったので、コンパレータから値を返す間に-ve記号を追加しました。 –
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.NavigableMap;
import java.util.SortedMap;
import java.util.TreeMap;
public class HashMapTest {
public static void main(String[] args) {
Map<String, Integer> map=new LinkedHashMap<String, Integer>();
map.put("a", 11);
map.put("B", 12);
map.put("c", 3);
map.put("d", 4);
map.put("e", 5);
map.put("f", 6);
map.put("g", 7);
map.put("h", 8);
map.put("i", 9);
map.put("j", 3);
map.put("k", 2);
map.put("l", 1);
List<Map.Entry<String, Integer>> entries = new
ArrayList<Map.Entry<String, Integer>>(map.entrySet());
Collections.sort(entries,new CustomizedHashMap());
Map<String, Integer> sortedMap = new LinkedHashMap<String,
Integer>();
for (Map.Entry<String, Integer> entry : entries) {
sortedMap.put(entry.getKey(), entry.getValue());
System.out.print(sortedMap.put(entry.getKey(),
entry.getValue())+" ");
}
}
}
class CustomizedHashMap implements Comparator<Map.Entry<String, Integer>> {
@Override
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
// TODO Auto-generated method stub
return -o1.getValue().compareTo(o2.getValue());
}
}
- 1. ソフトリファレンスJavaでLinkedHashMap?
- 2. Java LinkedHashMapのクローニング
- 3. LinkedHashMap to Pojo
- 4. AndroidでLinkedHashMap <string、LinkedHashMap <string、string >>を表示する方法
- 5. JavaでLinkedHashMapを小さくする
- 6. LinkedHashMapにputメソッドを使用するNullpointerException
- 7. LinkedHashMapを複合オブジェクトにキャストする
- 8. LinkedHashMapを使用したConcurrentModificationException
- 9. LinkedHashMapをvalueクラスのフィールドでソートするにはどうすればよいですか?
- 10. PythonのLinkedHashMapに相当します。
- 11. LinkedHashMap属性を使用したJava - コレクション
- 12. 来る方法LinkedHashMapは生の型です。ジェネリック型のLinkedHashMap <K,V>への参照は、Eclipse
- 13. LinkedHashMapとHibernateをどのようにマップするのですか?
- 14. LinkedHashMapのサブマップを要素インデックスで取得する方法は?
- 15. selectOneMenuのLinkedHashMapの事前選択
- 16. GSON fromJson EnumMapの代わりにLinkedHashMapを返します
- 17. MuleのlinkedHashMapから個々の値を返します
- 18. LinkedHashMapをテキストファイルに書き込みますか?
- 19. LinkedHashMapのkeyIteratorを取得するにはどうすればよいですか?
- 20. 1行だけをソートするUnixソート
- 21. maxHeapソートをminHeapソートに変更する
- 22. Cでリンクリストをソートする(選択ソート)
- 23. グループのソート、ソート、ソートの値をマップする方法
- 24. LRU使用可能なメモリに基づいてサイズを制限するLinkedHashMap
- 25. java mapをscalaに変換するにはLinkedHashMap型のマップ[String、ArrayList [String]]?
- 26. LinkedHashMapを使用した出現回数のカウント
- 27. ConcurrentModificationExceptionがさえのLinkedHashMapにCollections.sychronizedMapを使用して
- 28. アソシエーションをソートする
- 29. LinkedHashSetをソートする
- 30. NSMutableDictionaryをソートする
あなたがのLinkedHashMapを使用する必要がありますか? TreeMapは役に立ちますか? – RNJ
これは役立つかもしれないhttp://stackoverflow.com/questions/780541/how-to-sort-hash-map – RNJ
ああ。そうですか。コメントを読むことを気にしなかった。^_^ – DankMemes