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);
}
}