繁体   English   中英

如何在Java中比较两个列表数组的值

[英]How to compare values of two List Arrays in Java

我有两个列表,如下所示:

//list one = {1,2,3,4}
listone.add(1);
listone.add(2);
listone.add(3);
listone.add(4);

// list two = {3.0,4}
listtwo.add(3.0);
listtwo.add(4);

我尝试将listone 3listone中的3.0进行listtwo ,但是无论我做什么,它们似乎都不相等。 我想知道,我怎么能发现它们相等?

另外,如果我尝试查看它们是彼此的子集:

Collections.indexOfSubList(listone,listtwo);

显然,这不会检测到3.0等于3

所以我的问题是,如何测试3等于3.0

将无类型的列表转换为双精度列表:

    Stream<Double> s1 = listone.stream().map(o->((Number)o).doubleValue());
    List<Double> dblListone = s1.collect(Collectors.toList());

    Stream<Double> s2 = listtwo.stream().map(o->((Number)o).doubleValue());
    List<Double> dblListtwo = s2.collect(Collectors.toList());

不要使用==比较列表内容。 请改用compareTo(obj)

例:

A)创建两个列表

ArrayList<Double> myList = new ArrayList<Double>();
//... fill list
ArrayList<Integer> myList2 = new ArrayList<Integer>();
//....fill list

B)按相同顺序排序

C)循环并使用.compareTo()检查每个元素

for(int i=0; i<myList.size(); i++){

            if(myList.get(i).compareTo(Double.valueOf(myList2.get(i)))==0){
                //numbers are equal
            }
        }

当然,此解决方案要求两个列表大小相同。 myList.get(i) == (Double)myList2.get(i )不起作用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM