关于list排序

来源:互联网 发布:网络语狗子是啥意思 编辑:程序博客网 时间:2024/06/05 18:19
public class list_sort {

    static class item{
        int id;
        String name;
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        
    }
    
    public static void main(String[] args) {
        ArrayList<list_sort.item> items = new ArrayList<list_sort.item>();
        ArrayList<Integer> indexs = new ArrayList<Integer>();
        for (int i = 0; i < 10; i++) {
            indexs.add(i);//添加0-9  10个数字
        }
        Random rd = new Random();
        for (int i = 0; i < 10; i++) {//随机取其中一个添加,然后从源数据中删除,保证下次随机不会取到该数据
            int x = rd.nextInt(indexs.size());
            int y = indexs.get(x);
            list_sort.item ix = new list_sort.item();
            ix.setId(y + 1);
            ix.setName("第" + (y + 1) + "个元素");
            items.add(ix);
            indexs.remove(x);
        }
        for (int i = 0; i < items.size(); i++) {//打印排序前的数据
            System.out.println(items.get(i).getName() + " / " + items.get(i).getId());
        }
        Collections.sort(items, new Comparator<item>() {
            //排序   升序,特殊处理将7排在第一位
            @Override
            public int compare(item o1, item o2) {
                // TODO Auto-generated method stub
                if (o1.getId() == 7) {
                    return -1;
                }else if (o2.getId() == 7) {
                    return 1;
                }else {
                    if (o1.getId() > o2.getId()) {
                        return 1;
                    }else {
                        return -1;
                    }
                }
            }
        });
        for (int i = 0; i < items.size(); i++) {//打印排序之后的顺序
            System.err.println(items.get(i).getName() + " / " + items.get(i).getId());
        }
    }
    
}