java – Sorting of ArrayList containing multiple strings

Question: Question:

I want to sort this list by string in s1, it's difficult to apply a standard sort, but writing a string sort from scratch seems to be a pain in the code
Is there any good idea that you want to handle s1 and s2 as they are linked?

public class MultiList {
    public class String2{
        private String s1;
        private String s2;

        public void setString1(String text1) {
            s1 = text1;
        }
        public void setString2(String text2) {
            s2 = text2;
        }

        public String getString1() {
            return s1;
        }
        public String getString2() {
            return s2;
        }
    }



    public ArrayList<String2> String2List(ArrayList<String> s1, ArrayList<String> s2){
        //二つのリストからオブジェクト型のリストを返す
        ArrayList<String2> String2List = new ArrayList<String2>();
        if(s1.size() == s2.size()){
            for(int i = 0; i<s1.size();i++){
                String2 String2 = new String2();
                String2.setString1(s1.get(i));
                String2.setString2(s2.get(i));
            }
            return String2List;
        }
        return String2List;
    }
}

Answer: Answer:

If it's not a standard sort, try using java.util.Collections.sort(list, comparator) . example:

ArrayList<String2> merged = String2List(list_1, list_2);
java.util.Collections.sort(merged, new java.util.Comparator<String2>(){
        public int compare(String2 a, String2 b) {
        return a.getString1().compareTo(b.getString1());
    }
});

Complete example:

import java.util.ArrayList;

public class MultiList {
    public static void main(String args[]){
        ArrayList<String> list_1 = new ArrayList<String>();
        java.util.Collections.addAll(list_1, "c", "b", "a");
        ArrayList<String> list_2 = new ArrayList<String>();
        java.util.Collections.addAll(list_2, "Tom", "Peter", "Harry");

        ArrayList<String2> merged = String2List(list_1, list_2);
        java.util.Collections.sort(merged, new java.util.Comparator<String2>(){
              public int compare(String2 a, String2 b) {
                 return a.getString1().compareTo(b.getString1());
            }
        });

        for(String2 s:merged){
            System.out.println(s.getString1() + ", " + s.getString2());
        }
    }

    public static ArrayList<String2> String2List(ArrayList<String> s1, ArrayList<String> s2){
        ArrayList<String2> String2List = new ArrayList<String2>();
        if(s1.size() == s2.size()){
            for(int i = 0; i<s1.size();i++){
                String2 String2 = new String2();
                String2.setString1(s1.get(i));
                String2.setString2(s2.get(i));
                String2List.add(String2); // 注意
            }
        }
        return String2List;
    }

    public static class String2{
        private String s1;
        private String s2;

        public void setString1(String text1) {
            s1 = text1;
        }
        public void setString2(String text2) {
            s2 = text2;
        }

        public String getString1() {
            return s1;
        }
        public String getString2() {
            return s2;
        }
    }
}

Its output:

a, Harry
b, Peter
c, Tom
Scroll to Top