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