arrylist排序

Java的ArrayList排序

利用集合的默认排序

        //利用arraylist数组进行排序
        //1.整数
        ArrayList<Integer> ay = new ArrayList<>();
        ay.add(8);
        ay.add(2);
        ay.add(4);
        ay.add(5);
        ay.add(3);
        ay.add(6);
        ay.add(7);
        ay.add(8);

        //利用集合的排序工具,默认排序
        Collections.sort(ay);
        //使用for循环输出
        for (int i = 0; i < ay.size(); i++) {
            System.out.print(ay.get(i));
        }

输出结果为:23456788;


这种情况下系统默认的排序是升序的,但是可以利用比较器来控制输出的排序方式

再加上集合的比较器进行排序

        //自我选择式排序
        Collections.sort(ay, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                if (o1 < o2)  return 1;
                else if (o1 > o2) return -1;
                return 0;
            }
        });

        //使用for循环输出
        for (int i = 0; i < ay.size(); i++) {
            System.out.print(ay.get(i));
        }

输出结果为:88765432;

这样就改变了排序的顺序

数组中对象排序,以及double类型数据排序

    //创建一个学生类,读取文件内容时,经行保存,方便排序
    private static class Students{
         public String Name;
         public String Number;
         public double Score;

        Students(String a, String b, double c)
        {
            Name = a;
            Number = b;
            Score = c;

        }
    }


//排序, 用Arraylist的排序工具
                  Collections.sort(Stu, new Comparator<Students>() {
                       @Override
                       public int compare(Students o1, Students o2) {
                            if (o2.Score - o1.Score > 0)//double值返回不了,巧妙一点就ok
                            {
                                return 1;
                            }
                            else if (o2.Score - o1.Score > 0)
                            {
                                return -1;
                            }
                            
                            return 0;

                       }
                   });

这是构造的类进行排序,属于编程中常常遇到的。

利用这个排序器,根据想要的排序依据来进行排序

最后就是这个排序器的返回值修改问题了


为什么要改成这样,因为直接写是不行的!

这种排序方式中,只能返回int类型的值

而如若我们进行强制类型转化,会丢失精度,导致排序错误

eg:1.2和1.3在排序器中进行排序,是无法辨别的。

因为在强制转化为double时,得到的值为0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值