2つのlistセットをマージしてソート


集合合成なら
List
list1 = new ArrayList
();  /*.....データの追加....*/List
list2 = new ArrayList
();  /*.....データの追加....*/list1.addAll(list2);
一、比較対象オブジェクトはComparableインタフェースのcomparareTo方法を実現する必要がある
/**
*  order User 
*/
public class User implements Comparable<User>{
    private String name;
    private Integer order;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getOrder() {
        return order;
    }
    public void setOrder(Integer order) {
        this.order = order;
    }
    public int compareTo(User arg0) {
         return this.getOrder().compareTo(arg0.getOrder());
     }
}

テストコード
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Test{
    public static void main(String[] args) {
        User user1 = new User();
        user1.setName("a");
        user1.setOrder(1);
        User user2 = new User();
        user2.setName("b");
        user2.setOrder(2);
        List <User>  list = new ArrayList<User>();
        // add user2 add user1
        list.add(user2);
        list.add(user1);
        for(User u : list){
            System.out.println(u.getName());
        }
        Collections.sort(list);
        for(User u : list){
            System.out.println(u.getName());
        }
    }
}

出力結果
b
a
a
b
二、比較器Comparator実装comparareメソッドをカスタマイズする(ここでは匿名内部クラスの形式を採用する)
/**
*  order User 
*/
public class User {// Comparable 
    private String name;
    private Integer order;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getOrder() {
        return order;
    }
    public void setOrder(Integer order) {
        this.order = order;
    }
    
}

入力コンパレータ、テストコード
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Test{
    public static void main(String[] args) {
        User user1 = new User();
        user1.setName("a");
        user1.setOrder(1);
        User user2 = new User();
        user2.setName("b");
        user2.setOrder(2);
        List<User> list = new ArrayList<User> ();
        list.add(user2);
        list.add(user1);
        
         Collections.sort(list,new Comparator<User>(){
            public int compare(User arg0, User arg1) {
                return arg0.getOrder().compareTo(arg1.getOrder());
            }
        });
        for(User u : list){
            System.out.println(u.getName());
        }
    }
}

三、多属性比較
id属性を追加
/**
*  
*/
public class User {
    private Integer id;
     private String name;
    private Integer order;
    public Integer getId() {
  return id;
 }
 public void setId(Integer id) {
  this.id = id;
 }
 public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    
    public Integer getOrder() {
        return order;
    }
    public void setOrder(Integer order) {
        this.order = order;
    }
    
}

テストコード
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Test{
    public static void main(String[] args) {
        User user1 = new User();
        user1.setId(1);
        user1.setName("a");
        user1.setOrder(1);
        User user2 = new User();
        user2.setId(2);
        user2.setName("a");
        user2.setOrder(1);
        List<User> list = new ArrayList<User> ();
        list.add(user2);
        list.add(user1);
        
         Collections.sort(list,new Comparator<User>(){
            public int compare(User arg0, User arg1) {
            // order
               int i = arg0.getOrder().compareTo(arg1.getOrder());
               
               // order name
               if(i==0){
        
             int j= arg0.getName().compareTo(arg1.getName());
            
             // name id
             
             if (j==0){
              
              return arg0.getId().compareTo(arg1.getId());
             }
             return j;
               }
               return i;
            }
        });
        for(User u : list){
            System.out.println(u.getId());
        }
    }
}

参考記事:
http://zhidao.baidu.com/link?url=pLKlH1ymBXeFBnYsadJc_UhC4N6yJRmovyp_DJlC9pAvJrrLemK6IkDVnjtdm7bYXGTocVtm-9EXfb7YvH9B1a