[J2SE]List中的排序

来源:互联网 发布:美图薪资待遇 知乎 编辑:程序博客网 时间:2024/05/18 02:12

 

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Collections;

/**
 * 收获:
 * (1)List中的add方法,会调用toString方法。所以覆盖toString方法,才能加入相应的成员变量字符串
 * (2)List的排序通过Collections中的sort方法来实现。而该方法调用了Comparable接口中的compareTo方法;
 *    所以当List中是用户自定义对象时,如果要得到正确的排序结果,需要让用户自定义类继承Comparable接口,
 *    覆盖掉其中的compareTo方法。
 
*/

public class TestString {
    
public static void main(String[] args) {
        List list 
= new LinkedList();
        list.add(
new NameTwo("Tom","Jerry"));
        list.add(
new NameTwo("Steve","Samuelson"));
        list.add(
new NameTwo("Jack","Paul"));
        Collections.sort(list);
        System.out.println(list);
    }

}


class NameTwo implements Comparable{
    String firstname;
    String lastname;
    
    
    NameTwo(String firstname,String lastname)
{
        
this.firstname=firstname;
        
this.lastname=lastname;
    }

    
    
public String toString(){
        
return firstname+lastname;
    }

    
public int compareTo(Object obj) {
        NameTwo name 
= (NameTwo)obj;
        
int firstCmp = firstname.compareTo(name.firstname);
        
return
        (firstCmp
!=0?firstCmp:lastname.compareTo(name.lastname));
    }
    
}