2016-10-03 6 views
1

자바의 구조체 데이터에 3 개의 변수를 저장해야하는데, 나는 알파벳순으로 맵을 정렬해야하기 때문에 트리 맵에서 생각했습니다. 그러나 트리 맵은 2 개의 인수 만 취합니다.3 개의 문자열 인수를 가진 Treemap 자바

첫 번째 인수로 구조를 정렬 할 수있는 다른 구조는 무엇입니까? 같은

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

}

public static void printData(List<Person> data) { data.forEach(obj -> System.out.println("name" + obj.getName() + " " + "home" + obj.getHomeName() + " " + "car" + obj.getCarName())); 

}, 당신은 각 행에 대해 해당 클래스의 새로운 객체를 생성 이 값을 설정하고'List'에 추가하면됩니다. 나중에 Comparators를 사용하여 Collections.sort (list, firstFieldComparator)를 정렬 할 수 있습니다. –

답변

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 방송, 집, 자동차]

정렬 후 :
[abc, house, car]
당신은

 class Person 
    { 
    String name; 
    String houseName; 
    String carName; 
    // add getter... setter.. 
    ...... 
    } 

지금 당신은 이름 또는 다른 필드를 사용하여 정렬 할 수 있습니다이 3 개 필드 클래스를 생성 할 수 있습니다

0

[BDC, 하우스 2, car2].

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); 

당신은 행에있는이 3 개 값을 나타내는 3 개 필드가 별도의 클래스를 만들 수 있습니다