Map是通过键值对来储存数据的(key和value),数据可以根据key映射到它的value;
Map<Integer,String> keyAndValue = new LinkedHashMap<>();
keyAndValue.put(1,"重复数据");
keyAndValue.put(2,"重复数据");
keyAndValue.put(3,"重复数据");
keyAndValue.put(4,"特有数据");
- 当要取key对应的值时是比较简单的,通过 get(key)方法就可以取到值,如通过
String value = keyAndValue.get(1)
即可得到key为1时,Map对应的数据,即此时 value的值为 重复数据;
- 当要根据值取key时,就没有上面的直接的方法,而是要经过遍历获取
String valueWanted = "重复数据"; List<Integer> keyList = new ArrayList<>(); for (Map.Entry<Integer,String> keyEntry : keyAndValue.entrySet()) { Integer keyWanted = 0; String getValue = keyEntry.getValue(); if (valueWanted.equals(getValue)){ keyWanted = keyEntry.getKey(); keyList.add(keyWanted); } }
根据此方法则可得到满足条件的key的一个List;
-
当需要满足一定条件的key时,可以在上一方法遍历时的 if 里条件判断加上相应的约束;也可以查找到一个符合条件的key的时候 break 跳出循环,即可限制只返回一个key;
-
思路:当涉及先后操作的时候,可以取不同记录的开始时间来进行比较,以获得想要的数据。
if (nextId.equals(Id)&& actHiActinstStartTime >= hisStartTime){ key = actHiActinstEntry.getKey(); break; }
-
另外,当返回所有满足条件的key的一个集合的时候,也可以调用集合原有的方法来筛选自己想要的数据
Collections.max(keyList); Collections.min(keyList);
如以上两个方法,分别可以获得返回集合的最大值、最小值。