使用Java在LinkedHashMap中按值获取键
我有一个大的使用Java在LinkedHashMap中按值获取键,java,linkedhashmap,Java,Linkedhashmap,我有一个大的LinkedHashMap,我会使用整数到集合的映射,而不是列表,因为使用集合可以相对容易地检查用户输入,而不考虑顺序。对列表进行同样的检查会更加困难 public Integer getKey(Map<Integer, Set<String>> map, String input) { String[] parts = input.split(","); for (Map.Entry<Integer, Set<String>
LinkedHashMap,我会使用整数到集合的映射,而不是列表,因为使用集合可以相对容易地检查用户输入,而不考虑顺序。对列表进行同样的检查会更加困难
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;
}
public Integer getKey(映射映射,字符串输入){
String[]parts=input.split(“,”);
对于(Map.Entry:Map.entrySet()){
整数key=entry.getKey();
Set value=entry.getValue();
if(value.size()!=parts.length){
继续;
}
int计数器=0;
用于(字符串部分:部分){
if(值包含(部分)){
++计数器;
}
否则{
打破
}
}
如果(计数器==value.size()){
返回键;
}
}
返回null;
}
如果您只想检查输入的所有字符串是否都出现在地图中列表的某个位置,那么我认为该列表使用的数据结构是错误的。您还想考虑顺序吗?也就是说,abc,def
与def,abc
相同吗?我应该使用哪一种?也就是说,秩序就是物质。如果字符串是abc,ugy
程序应该打印出86,32
,但如果字符串是ugy,abc
程序应该打印出32,86
,也许使用集合更有意义。然后,您可以迭代用户的输入并进行检查
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;
}