に基づいて、私は属性label
& value
とオブジェクト・クラス、Project
を有します。私はセット内にオブジェクトを格納しています。問題は、あらかじめ定義されたラベルの順序に基づいてオブジェクトの属性を取得する必要があることです。私はTreeSetに同じを実装するコンパレータを提供する方法を理解することができません。ソートオブジェクト特定の所定の順序
public class Project {
String label;
String value;
//Setters & getters
}
project1.setLabel("Project Name");
project1.setValue("Solar Project");
project2.setLabel("Project Type");
project2.setValue("Government");
私は期待していた出力は
プロジェクト名=ソーラープロジェクト、プロジェクトの種類=政府
である。しかし、それは設定されているので、順序は常に同じではありません。
私はHashMap & TreeMapコンボで同じことができます。
Map<Integer, String> detailsHashMap = new HashMap<Integer, String>();
switch (person.getLabel()) {
case "Project Name":
detailsHashMap.put(1, person.getValue());
break;
case "Project Type":
detailsHashMap.put(2, person.getValue());
break;
default:
break;
}
Map<Integer, String> treeMap = new TreeMap<Integer, String>(detailsHashMap);
私は常にオブジェクトが順番に表示されたい
"プロジェクト名": "ソーラープロジェクト"、 "プロジェクトの種類": "政府"
注:
i)プロジェクトクラスに追加の整数フィールドを追加し、それに基づいてソートするのは回避策ですが、これらの値はjsonで使用されるため使用できません。大規模な変更が
を必要とされるので
II)マップするための設定から変更することはできません私はTreeSetのまたはSetのいずれかのimplmentationを達成することができます方法はありますか?あなたは以下のように、compareToメソッドをオーバーライドするメソッドを追加する必要があり、プロジェクトのクラスには、事前
素晴らしい!カスタムCompartorの実装は、私が探していたものです。それは魅力のように働いた:) – RahulArackal