Java 滚动LinkedHashMap至键

Java 滚动LinkedHashMap至键,java,linkedhashmap,Java,Linkedhashmap,如何将LinkedHashMap滚动到特定键?大概是这样的: LinkedHashMap<String,String> queque = new LinkedHashMap<String,String>(); queque.put("uno","uno"); queque.put("due","due"); queque.put("tre","tre"); queque.put("quattro","quattro"); queque.put("cinque","cinq

如何将LinkedHashMap滚动到特定键?大概是这样的:

LinkedHashMap<String,String> queque = new LinkedHashMap<String,String>();
queque.put("uno","uno");
queque.put("due","due");
queque.put("tre","tre");
queque.put("quattro","quattro");
queque.put("cinque","cinque");
Iterator i = queque.entrySet().iterator();
while(i.next().getKey().equals(quattro)) {
    System.out.print(i.getKey() + ": ");
    System.out.println(i.getValue());
    i.next();
}

除非您确实希望通过键获取值,否则不必显式迭代:只需使用get方法:

如果要将所有值打印到某个值,可以执行以下操作:

Iterator i = queque.entrySet().iterator();
    while(i.hasNext()) {
        Map.Entry<String, String> me = i.next();
        if (me.getKey() == "quattro") break;
        System.out.println(me.getKey() + ": " + me.getValue());
    }
或者,更优雅一点:

for (Map.Entry<String, String> me : queque.entrySet()) {
    if (me.getKey() == "quattro") break;
    System.out.println(me.getKey() + ": " + me.getValue());
}
还有几点:

如果您不需要按照元素添加的顺序存储元素,请使用HashMap而不是LinkedHashMap,因为前者更快。如果要对存储元素进行排序,请使用TreeMapb,但要注意它比其他类型的映射速度慢

在Java中创建容器实例时,最好使用赋值和实现左侧的Map、List或Set等接口,如HashMap,ArrayList等,因为它给了您更多的灵活性:如果您以后决定更改同一接口的实现,例如使用HashMap而不是我上面建议的LinkedHashMap,您只需要更改创建此容器的代码的一行,而不是更改使用此容器的所有位置


除非您确实希望通过键获取值,否则不必显式迭代:只需使用get方法:

如果要将所有值打印到某个值,可以执行以下操作:

Iterator i = queque.entrySet().iterator();
    while(i.hasNext()) {
        Map.Entry<String, String> me = i.next();
        if (me.getKey() == "quattro") break;
        System.out.println(me.getKey() + ": " + me.getValue());
    }
或者,更优雅一点:

for (Map.Entry<String, String> me : queque.entrySet()) {
    if (me.getKey() == "quattro") break;
    System.out.println(me.getKey() + ": " + me.getValue());
}
还有几点:

如果您不需要按照元素添加的顺序存储元素,请使用HashMap而不是LinkedHashMap,因为前者更快。如果要对存储元素进行排序,请使用TreeMapb,但要注意它比其他类型的映射速度慢

在Java中创建容器实例时,最好使用赋值和实现左侧的Map、List或Set等接口,如HashMap,ArrayList等,因为它给了您更多的灵活性:如果您以后决定更改同一接口的实现,例如使用HashMap而不是我上面建议的LinkedHashMap,您只需要更改创建此容器的代码的一行,而不是更改使用此容器的所有位置


如果您想用迭代器正确地完成它,您可以这样做

    Iterator<Entry<String, String>> i = queque.entrySet().iterator();
    while (i.hasNext()) {
        Entry<String, String> entry = i.next();
        if ("quattro".equals(entry.getKey()))
            break;
        System.out.println(entry.getKey() + ": " + entry.getValue());
    }
但这相当于使用增强的for循环,如下所示:

    for (Entry<String, String> entry : queque.entrySet()) {
        if ("quattro".equals(entry.getKey()))
            break;
        System.out.println(entry.getKey() + ": " + entry.getValue());
    }

使用迭代器,您必须检查hasNext,然后只调用next一次!每个循环或迭代器将前进两个元素。您也不应该将字符串与==进行比较,这只是不起作用。

如果您想使用迭代器正确地进行比较,您可以这样做

    Iterator<Entry<String, String>> i = queque.entrySet().iterator();
    while (i.hasNext()) {
        Entry<String, String> entry = i.next();
        if ("quattro".equals(entry.getKey()))
            break;
        System.out.println(entry.getKey() + ": " + entry.getValue());
    }
但这相当于使用增强的for循环,如下所示:

    for (Entry<String, String> entry : queque.entrySet()) {
        if ("quattro".equals(entry.getKey()))
            break;
        System.out.println(entry.getKey() + ": " + entry.getValue());
    }


使用迭代器,您必须检查hasNext,然后只调用next一次!每个循环或迭代器将前进两个元素。您也不应该将字符串与==进行比较,这根本不起作用。

听起来您应该在我看来使用TreeMap。那你就用吧。

听起来你应该用TreeMap。然后您只需使用。

我想将列表打印到特定值,而不是打印单个值value@alexander这是关键信息,应该成为你问题的一部分;在这条线上,我有一个不匹配的错误。”亚力山大:如果你对答案满意,你会考虑接受吗?谢谢@亚历山大:那你能接受吗?鉴于您是新来的,请给出一个简短的解释,以防万一:StackOverflow的习惯是接受问题作者认为最有用的答案。这种被接受的答案以绿色记号标记,并显示在答案的正下方的最上方。谢谢我想将列表打印到一个特定的值,而不是打印一个value@alexander这是关键信息,应该成为你问题的一部分;在这条线上,我有一个不匹配的错误。”亚力山大:如果你对答案满意,你会考虑接受吗?谢谢@亚历山大:那你能接受吗?鉴于您是新来的,请给出一个简短的解释,以防万一:StackOverflow的习惯是接受问题作者认为最有用的答案。这种被接受的答案以绿色记号标记,并显示在答案的正下方的最上方。谢谢除了语法错误和您尚未阅读之外,您当前的方法还有什么错误?不起作用,eclipse向我建议在迭代器中进行转换,但是如何进行?根据您上次的编辑:您可能需要while!i、 改为next.getKey.equalsquattro,因为根据您现在的条件,您将只打印quattro的条目。除了语法错误和您尚未阅读之外,您当前的方法还有什么问题?不起作用,eclipse向我建议在迭代器中强制转换,但是如何转换?根据您上次的编辑:您可能需要while!i、 改为next.getKey.equalsquattro,因为根据现在的条件,您将只打印quattro的条目。