我需要在java中的任何结构数据中保存3个变量,我想在树形图中因为我需要按字母顺序对地图进行排序,但是,树形图只需要2个参数。
当一个可以在第一个参数的函数中对结构进行排序时的任何其他结构?喜欢
["abc","house","car"]
["bdc","house2","car2"]
答案 0 :(得分:1)
您可以使用带有自定义比较器的数组列表:
public static void main(String[] args) {
List<String[]> data = new ArrayList<>();
data.add(new String[]{"bdc", "house2", "car2"});
data.add(new String[]{"abc", "house", "car"});
printData(data);
Collections.sort(data, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
return o1[0].compareTo(o2[0]);
}
});
System.out.println();
printData(data);
}
public static void printData(List<String[]> data){
for(String[] s: data){
System.out.println(Arrays.toString(s));
}
}
输出:
分拣前:
[bdc,house2,car2]
[abc,house,car]
排序后:
[abc,house,car]
[bdc,house2,car2]
答案 1 :(得分:1)
您可以使用这3个字段创建一个类
class Person
{
String name;
String houseName;
String carName;
// add getter... setter..
......
}
现在您可以使用名称或任何其他字段对其进行排序。
public static void main(String[] args) {
List<Person> data = new ArrayList<>();
data.add(new Person(name1, housname1, carname1));
data.add(new Person(name2, housename2, carname2));
// sorting using name
data.sort((o1, o2)->o1.getName().compareTo(o2.getName()));
// print data
printData(data);
}
public static void printData(List<Person> data)
{
data.forEach(obj -> System.out.println("name" + obj.getName() + " " + "home" + obj.getHomeName() + " " + "car" + obj.getCarName()));
}