带有3个字符串参数java的树形图

时间:2016-10-03 22:21:02

标签: java sorting data-structures treemap

我需要在java中的任何结构数据中保存3个变量,我想在树形图中因为我需要按字母顺序对地图进行排序,但是,树形图只需要2个参数。

当一个可以在第一个参数的函数中对结构进行排序时的任何其他结构?喜欢

["abc","house","car"]
["bdc","house2","car2"]

2 个答案:

答案 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()));

}