2016-10-03 1 views
1

Мне нужно сохранить 3 переменные в любых данных структуры в java, я думал в treemap, потому что мне нужна сортировка карты в алфавитном порядке, но treemap принимает только 2 аргумента.Treemap с 3 аргументами строк java

Любая другая структура, когда может сортировать структуру в funtion первого аргумента? как

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

Вы можете создать отдельный класс, который имеет 3 поля для представления этих 3 значения в строке, а затем создать новый объект этого класса для каждой строки установив эти значения и добавив их в «Список». Позже вы можете отсортировать 'Collections.sort (list, firstFieldComparator)' их, используя 'Comparator'. –

ответ

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, Дом2, car2]
[азбука, дом, автомобиль]

После сортировки:
[abc, house, car]
[BDC, Дом2, car2]

0

Вы можете создать класс с этими 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())); 

}

Смежные вопросы