2017-06-16 7 views
-1

Iは、ArrayList(リストA)を有するnames.Iを含むいくつかのIDSと他ArrayList(リストB)を含有するそれぞれのArrayListをソートするソートされたリストAこの場合、私は何をすべきでしょうか?これを実現するための別のArrayList

+2

利用のTreeMapやHashMapをあなたは –

+0

はそれを再設計したいと、それは施設を提供しています。 1つのクラスに名前_and_ idsを持ち、_those_のArrayListを作成します。 –

+0

はどんな意味がありません - どのように第二のリストは、最初にリンクされています?。 1つの構造体/クラスで両方を保持し、必要に応じてid/nameをソートする必要があります。ソートのためにComparable/Comparatorを実装する。 – Gaurav

答えて

1

1つの可能な方法は次のとおりです。

classを作成し、必要なpropertiesを追加します。次に、Comparatorを使用して、必要に応じてソートします。

私はクラス Student

public class Student { 
    private int id; 
    private String name; 

    public Student(int id, String name) { 
     this.id=id; 
     this.name=name; 
    } 
    @Override 
    public String toString() { 
     return this.id+"-"+this.name; 
    } 

    public String getName(){ 
     return this.name; 
    } 

    public static void main(String[] args) { 
     List<Student> stu = new ArrayList<>(); 
     stu.add(new Student(4,"Alaska")); 
     stu.add(new Student(5,"Barlin")); 
     stu.add(new Student(9,"America")); 
     stu.add(new Student(2,"India")); 
     Comparator<Student> byId = (Student s1,Student s2)->(s1.id)-(s2.id); //java 8 lambda expression 
     stu.sort(byId); 
     System.out.println(stu); 
     //Way-1 -java 8 lambda expression 
     Comparator<Student> byName = (Student s1,Student s2)->s1.getName().compareTo(s2.getName()); 
     //Way-2 - java 8 method reference 
     //Comparator<Student> byName = Comparator.comparing(Student::getName); 
     stu.sort(byName); 
     System.out.println(stu); 

    } 
} 

[2-インド、4-アラスカ、5-Barlin、9-アメリカ]

idname基づいて並べ替える方法の例を与えている

[4-アラスカ、9-アメリカ、5-Barlin、2-インド]

0
public class A { 

public static void main(String[] args) { 

    List<Integer> idList = new ArrayList<Integer>(); 
    idList.add(5); 
    idList.add(2); 
    idList.add(4); 
    idList.add(1); 
    idList.add(3); 

    List<String> nameList = new ArrayList<String>(); 
    nameList.add("Priya"); 
    nameList.add("Pooja"); 
    nameList.add("Sneha"); 
    nameList.add("Ritesh"); 
    nameList.add("Nikita"); 

    Map<Integer, String> map = new HashMap<Integer, String>(); 
    for(int i = 0; i < idList.size(); i++) { 
     map.put(idList.get(i), nameList.get(i)); 
    } 

    List<Integer> list = new ArrayList<Integer>(map.keySet()); 
    Collection.sort(list); 
    idList.clear(); 
    nameList.clear(); 

    for(int i = 0; i < map.size(); i++) { 
     idList.add(list.get(i)); 
     nameList.add(map.get(list.get(i))); 
    } 


} 

}の代わりのArrayListの

関連する問題