Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从LinkedHashMap获取密钥_Java_List_Key Value_Linkedhashmap - Fatal编程技术网

Java 如何从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获取密钥

例如,我有
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));