我想比较两个不同的arraylists的键说
List<DataSt> list1 = new ArrayList<DataSt>();
List<DataSt> list2= new ArrayList<DataSt>();
DataSt是:
public class DataSt {
public String key;
BigDecimal time;
BigDecimal memory;
public DataSt(String key,BigDecimal time, BigDecimal memory)
{
this.key=key;
this.time=time;
this.memory=memory;
}
}
list1的:
<org.openjdk.jmh.samples.JMHSortBenchmark.collectionsSort,6691.679,5454>
<org.openjdk.jmh.samples.JMHSortBenchmark.abcdSort,5151.45,54545>
<org.openjdk.jmh.samples.JMHSortBenchmark.saasSort,5454.54,21212.2>
<org.openjdk.jmh.samples.JMHSortBenchmark.xyzSort,888.22,2115>
list2:
<org.openjdk.jmh.samples.JMHSortBenchmark.xyzSort,7448.362,7887.2>
<org.openjdk.jmh.samples.JMHSortBenchmark.abcdSort,951.5,4512.5>
<org.openjdk.jmh.samples.JMHSortBenchmark.lmnSort,4454.54,455.2>
如果他们匹配例如,&#34; org.openjdk.jmh.samples.JMHSortBenchmark.xyzSort&#34;所以我想返回list1和list2的<Key,time,memory>
,即它必须返回
org.openjdk.jmh.samples.JMHSortBenchmark.xyzSort,888.22,2115
org.openjdk.jmh.samples.JMHSortBenchmark.xyzSort,7448.362,7887.2
org.openjdk.jmh.samples.JMHSortBenchmark.abcdSort,5151.45,54545
org.openjdk.jmh.samples.JMHSortBenchmark.abcdSort,951.5,4512.5
因为我想处理它们的值之间的差异并比较它们,即list1中的888.2,2115和map2中的7448.362,7887.2,从而将差异记录到csv文件中。
我使用了以下代码:
public static List<DataSt> outputComparator(List<DataSt> list1, List<DataSt> list2) {
List<DataSt> map4 = new ArrayList<DataSt> ();
for (DataSt entry: list1) {
if (list2.contains(entry.key)) {
saveRecord(entry, **//Here I want to return DataSt of list2//**,entry.key,map4);
} else {
saveRecord(entry.key, map4);
}
}
for (DataSt entry: list2) {
if (!(list1.contains(entry.key))) {
saveRecord(entry.key, map4);
}
}
return map4;
}
语句"entry"
中的"saverecord"
会为该次运行返回"list1.key, list1.time, list1.value"
我不知道如何获得"DataSt part of list2"
。有人可以帮助我在"list2.key, list2.time, list2.value"
时如何检索"list1.key == list2.key"
(请参阅saveRecord()中的注释字段)。
答案 0 :(得分:0)
list2.contains(entry.key)
并不能按照您的想法行事。它不知道DataSt.key
实际上是一个关键。您正在尝试将String对象与DataSt对象匹配(这将永远不会起作用)。
您可以覆盖equals
只是比较密钥,或者您可以编写自己的DataSt findItem(ArrayList<DataSt> list, String key)
如果你真的需要键控数据,你可以查看一个不同的结构,你可以通过键实际查找。