Java List集合中嵌套了List集合,进行比大小,标0跟下标0的比较

Java List集合中嵌套了List集合,进行比大小,标0跟下标0的比较@TOC

Java List集合中嵌套了List集合,进行比大小,标0跟下标0的比较

在这里插入图片描述
之前很是苦恼这种格式的数据这么进行比较大小,下标0跟下标0的比较,下标1跟下标1的比较,终于问了个大佬,大佬不到5分钟就给我解决了这个小问题,大家都是人,为啥我这脑子就想不出来呢!!!

下面展示代码,前提,list中每个元素的元素个数相同。

public static void main(String[] args) {
        List<List> lists = new ArrayList<>();
        List list1 = new ArrayList();
        list1.add(1.1);
        list1.add(2.2);
        list1.add(3.3);

        List list2 = new ArrayList();
        list2.add(5.0);
        list2.add(7.0);
        list2.add(2.1);

        List list3 = new ArrayList();
        list3.add(11.0);
        list3.add(16.0);
        list3.add(13.0);

        lists.add(list1);
        lists.add(list2);
        lists.add(list3);
		
		// 前提,list中每个元素的元素个数相同
       	// 最外层的list不是可能有很多个内部的list,
        // 你这里是内部的所有list中的元素 个数都相同,那么就想到循环比较就行了
        // 第一层循环就直接用内部list的元素个数当作控制,因为元素个数每个list都相同,这里就取第一个
        for (int i = 0; i < lists.get(0).size(); i++) {

            // 因为要获取最大值和最小值,这里 先把要获取的两个变量列出来
            // 因为后面涉及到Double的比较大小,担心丢失精度的问题,这里用BigDecimal来比较
            // 将最小值一开始设为Integer的最大值,一般来说,元素中的数值大小也不会大于这个数吧
            // 将最大值一开始设为Integer的最小值,一般来说,元素中的数值大小也不会小于这个数吧
            BigDecimal min = new BigDecimal(Integer.MAX_VALUE);
            BigDecimal max = new BigDecimal(Integer.MIN_VALUE);

            // 循环比较
            // 最外层list根据元素个数进行循环
            for (List list : lists) {
                // 获取每个list的的元素,外部的循环i刚好可以控制获取内部list的第i的元素
                BigDecimal temp = BigDecimal.valueOf((Double) list.get(i));
                // 比较,将较小的值赋给min
                if (min.compareTo(temp) > 0) {
                    min = temp;
                }
                // 比较,将较大的值赋给max
                if (max.compareTo(temp) < 0) {
                    max = temp;
                }
            }
            // 获得第i个的最大值,最小值
            System.out.println(max);
            System.out.println(min);
        }
     }
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值