-5

我正在迭代hashmap,但是迭代时这些奇怪的括号[]在那里,任何人都可以指导我如何摆脱它。

谢谢

 Iterator it = map.entrySet().iterator();

            while (it.hasNext()) {

                Map.Entry pairs = (Map.Entry)it.next();                 
                System.out.println(pairs.getKey() + " = " + pairs.getValue());                      
                Log.v("Pairs get key", pairs.getKey().toString());
                Log.v("Pairs get value", pairs.getValue().toString());
                mysection.add(pairs.getKey().toString());
                temp.add(pairs.getValue().toString());

                it.remove(); // avoids a ConcurrentModificationException

            }
4

3 回答 3

1

我运行了代码。

    Map<String, String> map = new HashMap<String, String>();
    map.put("AAAA", "11111");
    map.put("BBBB", "22222");
    map.put("CCCC", "33333");

    Iterator<Entry<String,String>> it = map.entrySet().iterator();

    while (it.hasNext()) {
        Entry<String, String> pairs = it.next();                 
        System.out.println(pairs.getKey() + " = " + pairs.getValue());                      
        System.out.println("Pairs get key: "+pairs.getKey().toString());
        System.out.println("Pairs get value: "+pairs.getValue().toString());
        it.remove(); // avoids a ConcurrentModificationException
    }

输出是

AAAA = 11111
Pairs get key: AAAA
Pairs get value: 11111
BBBB = 22222
Pairs get key: BBBB
Pairs get value: 22222
CCCC = 33333
Pairs get key: CCCC
Pairs get value: 33333

唯一的区别是我不知道你在地图上放了什么数据。如果您放置一个 List ,它将输出 [] 符号,因为 java 将打印其 toString() 方法,这就是列表的显示方式。

于 2012-05-11T17:43:23.880 回答
1

我将忽略代码不使用泛型的部分以及您实际上没有给我们“意外”输出的部分,以便我们能够找出问题所在,并列出三种情况你可以得到“这些奇怪的符号”:

  1. 地图的键或值是某种类型的集合。然后集合的toString方法将打印其内容,例如[1],或[1,2,3]
  2. 地图的键或值是一些东西的数组。ThenObjecttoString方法将打印对象类型和地址,例如[Ljava.lang.String;@19821f是一个字符串数组。
  3. 映射的键或值是String带有[]s 的 s,或者是其toString方法打印[]s 的某种其他类型的对象。
于 2012-05-11T17:34:57.130 回答
-1

好的,我得到了答案,问题是地图显示到控制台时会显示 和 [] 符号。因此,为了避免它使用另一种实现来迭代 map 而不是这个。

于 2012-05-15T08:38:44.637 回答