如何在java中基于其他两个列表创建一个列表



我想创建一个新列表,该列表基于两个列表的值,并且具有与第一个列表一样多的元素,例如

输入:

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比较大,最好先构造一个从它的第二个元素到第一个元素的映射,然后在这个映射中进行搜索。

最新更新