比较Map和List以及从List中提取元素

con*_*ner -1 java collections

我有一个Map和一个List My列表,一个值对象的主列表和Map包含的值是值对象的id我有一个值对象

 public class Value
{


    private int id;

    private String value;

//set and gets to follow
}

Map valueMap = new HashMap();   

valueMap.put(1001,"Test1")//key is id of the value object 
valueMap.put(1002,"Test2")
valueMap.put(1003,"Test3")


 List list = new Array list();
 list.add(value1)
 list.add(value2)
 list.add(value3)
 list.add(value4)
 list.add(value5)
Run Code Online (Sandbox Code Playgroud)

从列表中我想提取列表的子集,其value.id是地图的==键

我该怎么做并迭代两者?

jlo*_*rdo 5

你应该用

Map<Integer, String> valueMap = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

List<Value> list = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

然后,你可以做这样的事情:

List<Value> subset = new ArrayList<>();
Iterator<Value> iterator = list.iterator();
while (iterator.hasNext()) {
    Value val = iterator.next();
    if (valueMap.containsKey(val.getId())) {
        subset.add(val);
    }
}
Run Code Online (Sandbox Code Playgroud)

甚至

List<Value> subset = new ArrayList<>();
for (Value val : list) {
    if (valueMap.containsKey(val.getId())) {
        subset.add(val);
    }
}
Run Code Online (Sandbox Code Playgroud)