1. 程式人生 > 實用技巧 >集合排序

集合排序

集合排序採用的是呼叫List的sort方法傳入引數(比較器)實現Comparator介面,

package list;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class TestSort {

    public static void main(String[] args) {
        
        List<Integer> list = new ArrayList<Integer>();
        
        list.add(
111); list.add(222); list.add(333); list.add(555); list.add(444); list.forEach(o->System.out.println(o)); System.out.println("-------------------"); // list.sort(new ClassB()); list.sort((i1,i2)->{ if(i1<i2)return
-1; return 1; }); System.out.println("---------------------"); list.forEach(o->System.out.println(o)); 11 } } //class ClassB implements Comparator<Integer>{ // public int compare(Integer i1,Integer i2) { // //負換正不換 引數1表示集合要新增的值,引數2表示集合中原有的值
//// System.out.println(i1); //// System.out.println(i2); //// return -10; // //升序排列 //// if(i1<i2) return -1; //// return 1; // //降序排列 // if(i1>i2)return -1; // return 1; // } // //}
package list;

import java.util.ArrayList;
import java.util.List;

public class TestSort1 {

    public static void main(String[] args) {
        // 建立集合
        List<Worker> list = new ArrayList<Worker>();
        
        list.add(new Worker("哈哈",38,'男',3800D));
        list.add(new Worker("嘻嘻",19,'男',3900D));
        list.add(new Worker("嘖嘖",25,'男',3900D));
        list.add(new Worker("臥槽",41,'男',3600D));
        list.add(new Worker("無情",47,'男',4000D));
        list.add(new Worker("略略",16,'男',4200D));
        
        list.sort((w1,w2)->{
            //負換正不換,w1後w2前
            //工資降序
            if(w1.salary>w2.salary) {
                return -1;
            }else if(w1.salary<w2.salary){
                return 1;
            }else {
                //按照年齡降序排
                if(w1.age<w2.age)return 1;
                return -1;
            }
            
        });
        
        list.forEach(w->System.out.println(w));

    }

}
class Worker{
    String name;
    Integer age;
    Character sex;
    Double salary;
    public Worker() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Worker(String name, Integer age, Character sex, Double salary) {
        super();
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.salary = salary;
    }
    @Override
    public String toString() {
        return "Worker [name=" + name + ", age=" + age + ", sex=" + sex + ", salary=" + salary + "]";
    }
    
}