如何根据 java 中的其他两个列表制作列表
How to make a list based on two other lists in 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 比你大,你最好首先构建一个从它的第二个元素到第一个元素的映射,然后在这个映射中进行搜索。
我想创建一个新的列表,它基于两个列表的值,并且具有与第一个列表一样多的元素,例如
输入:
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 比你大,你最好首先构建一个从它的第二个元素到第一个元素的映射,然后在这个映射中进行搜索。