当前位置: 首页 > 知识库问答 >
问题:

map.keyset()和map.values()的匹配

姜锋
2023-03-14

我使用以下代码

public static void main(String[] args) {
        // TODO Auto-generated method stub
        Map<String, String> mapTest = new HashMap<String, String>();
        mapTest.put("1", "one");
        mapTest.put("2", "two");
        mapTest.put("3", "three");
        mapTest.put("4", "four");
        mapTest.put("5", "five");
        mapTest.put("6", "six");
        mapTest.put("7", "seven");
        mapTest.put("8", "eight");
        mapTest.put("9", "nine");
        mapTest.put("10", "ten");
        for (int i=1;i<100;i++) {
            for(String key:mapTest.keySet()) {
                System.out.print(key);              
            }
            System.out.println();
            for(String value:mapTest.values()) {
                System.out.print(value+" ");
            }
            System.out.println();
        }
    }

并且输出总是

12345678910
one two three four five six seven eight nine ten 
  1. 但这是否是密钥和打印的值不匹配的任何可能性,如
123....10
two one ten...three

例如。

259....1
two five nine.....one

共有2个答案

邹玄裳
2023-03-14

如果您确实需要值和keySet的顺序相同,可以使用TreeMap。

public Collection values():返回此映射中包含的值的集合视图。集合的迭代器按相应键的升序返回值。

public Set keySet()返回此映射中包含的键的集合视图。集合的迭代器按升序返回键。

https://docs.oracle.com/javase/8/docs/api/java/util/treemap.html

陆寒
2023-03-14

是的,它们可能以不同的顺序出现。它甚至在Javadoc中这样说(着重号为后加):

这类不保证地图的顺序;特别是,它并不能保证订单会随着时间的推移保持不变。

您应该使用定义了顺序的map实现。例如,LinkedHashMap按照您向其添加键的顺序进行迭代;或者树集,它按照键的自然顺序迭代(尽管您可能不希望这样做,因为“10”将在“1”“2”之间排序。

 类似资料:
  • 对于以下地图: 这是代码。。。 ...保证两次打印相同的序列? 如果没有,在例如< code>java.util.HashMap中是否有任何保证?

  • 我正在寻找一个正则表达式,它可以做到这一点:我的文本: 我想提取的是: 有人有主意吗? 我试过:

  • 他们在两边配置了相同的keystore和truststore文件。我已经打开了它们的keystore和truststore,这是它们的构建方式: keystore entry1-server cert[1]md5:x cert[2]md5:y cert[3]md5:Z TrustStore entry1-root 证书[1]MD5:Z entry2-intermedium 证书[1]MD5:Y 在

  • 它看起来像hamcrest(尽管看起来,还有更多)。为什么我会选择使用(除了看起来类稍微小一点之外),为什么这两个类如此相似?

  • 我已经将JVM的Xmx参数设置为5120,但是当java进程(tomcat)运行时,我看到MaxHeapSize与Xmx值不匹配,它停留在2570,这对我来说很奇怪,对此任何想法都非常感谢!! PS的输出: /usr/bin/java-dnop-djava.util.logging.manager=org.apache.juli.classloaderlogmanager ITGC-djava.e

  • 将上面几个点,就用了很大的篇幅了,现在介绍一些边界匹配符和组的概念。 一般的边界匹配符有以下几个: 语法 描述 ^ 匹配字符串开头(在有多行的情况中匹配每行的开头) $ 匹配字符串的末尾(在有多行的情况中匹配每行的末尾) \A 仅匹配字符串开头 \Z 仅匹配字符串末尾 \b 匹配 \w 和 \W 之间 \B \b 分组,被括号括起来的表达式就是分组。分组表达式 (...) 其实就是把这部分字符作为