我想创建一个新列表,它基于两个列表的值,并且具有与第一个列表一样多的元素,例如
输入:
MyOjbect: int key1, int key2;
List1<Integer>: {1,2,3,3,2}
List2<MyObject>: {{20,5},
{21,4},
{22,3},
{23,2},
{24,1},
{25,0},
{26,-1}}
输出(与第一个列表具有相同数量元素的列表):
List3<Integer>: {24,23,22,22,23}
对此有许多可能的方法。以下基本解决方案具有二次时间复杂度,因此如果 List2 很大则不好:
List<Integer> result = new ArrayList<>();
for (Integer key : List1) {
for (MyObject obj : List2) {
if (obj.getSecondElement().equals(key)) {
result.add(obj.getFirstElement());
}
}
}
如果 List2 比你最好先构造一个从它的第二个元素到第一个元素的映射,然后在这个映射中进行搜索。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句