[英]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
3
与listone
中的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.