我有一个很大的LinkedHashMap<Integer,<List<String>>
例如:
<86, ["abc","def","xyz"]>
<32, ["ugy","oop","bbb"]>
<..., ...........]>
我想要的是当用户键入逗号分隔的字符串(例如“abc,oop,bbb”)时,我想打印出密钥。在这些情况下,键是 86,32,32 。我可以使用 .split(“”); 将String separete处理成一个数组,但我不知道搜索这些字符串的最简单方法是什么?
答案 0 :(得分:0)
我会使用整数映射来设置而不是列表,因为使用集合会对用户输入进行检查而不考虑订单相对容易。对列表进行相同的检查会更难。
public Integer getKey(Map<Integer, Set<String>> map, String input) {
String[] parts = input.split(",");
for (Map.Entry<Integer, Set<String>> entry : map.entrySet()) {
Integer key = entry.getKey();
Set<String> value = entry.getValue();
if (value.size() != parts.length) {
continue;
}
int counter = 0;
for (String part : parts) {
if (value.contains(part)) {
++counter;
}
else {
break;
}
}
if (counter == value.size()) {
return key;
}
}
return null;
}