Java 如何从LinkedHashMap获取密钥
如何从LinkedHashMap获取密钥 例如,我有Java 如何从LinkedHashMap获取密钥,java,list,key-value,linkedhashmap,Java,List,Key Value,Linkedhashmap,如何从LinkedHashMap获取密钥 例如,我有LinkedHashMap,其中包含键和用户名,我需要在扫描仪的帮助下输入名称,然后我想看看该元素有什么键,我输入的元素: static LinkedHashMap<Integer, String> names = new LinkedHashMap<>(); static Scanner sc = new Scanner(System.in); static int i = 1; stasic String name;
LinkedHashMap
,其中包含键和用户名,我需要在扫描仪的帮助下输入名称,然后我想看看该元素有什么键,我输入的元素:
static LinkedHashMap<Integer, String> names = new LinkedHashMap<>();
static Scanner sc = new Scanner(System.in);
static int i = 1;
stasic String name;
public static void main(String[] args) {
int b = 0;
while (b == 0) {
System.out.println("Input your name: ");
name = sc.nextLine;
names.put(i, name);
i += 1;
outName();
}
}
public static void outName() {
System.out.println("Input name: ");
name = sc.nextLine();
if (names.containsValue(name)) {
//I do not know what should I do here?
}
}
静态LinkedHashMap名称=新建LinkedHashMap();
静态扫描仪sc=新扫描仪(System.in);
静态int i=1;
静态字符串名称;
公共静态void main(字符串[]args){
int b=0;
而(b==0){
System.out.println(“输入您的姓名:”);
name=sc.nextLine;
姓名。填写(i,姓名);
i+=1;
outName();
}
}
公共静态void outName(){
System.out.println(“输入名称:”);
name=sc.nextLine();
if(name.containsValue(name)){
//我不知道我在这里该怎么办?
}
}
for(Map.Entry:names.entrySet()){
String key=entry.getKey();
ArrayList值=entry.getValue();
}
使用Map.Entry进行迭代如果您希望按键的设置顺序收集键,则如下所示:
map.entrySet().stream().map(Map.Entry::getKey).collect(Collectors.toCollection(LinkedHashSet::new));
这里LinkedHashSet维护LinkedHashMap的插入顺序。
如果使用HashSet,则可能会更改键的顺序。为确保安全,请使用LinkedHashSet
同样的事情也适用于ArrayList的情况。ArrayList维护插入顺序,因此无需担心顺序
map.entrySet().stream().map(Map.Entry::getKey).collect(Collectors.toCollection(ArrayList::new));
听起来你是在向后使用地图,在这种情况下,也许你想要地图?然后你只需要说出名字。得到(名字)。另外,您希望如何处理重复的名称?或者允许重复?您似乎在向后使用
Map
。哎呀。这看起来很像一个列表
——只需使用List.indexOf
。不快,但它会起作用。
map.entrySet().stream().map(Map.Entry::getKey).collect(Collectors.toCollection(ArrayList::new));