Java中的Hashmap具有“[”“]”这些符号

时间:2012-05-11 17:20:43

标签: java

我正在迭代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

            }

3 个答案:

答案 0 :(得分:1)

我要掩盖代码不使用泛型的部分,以及你实际上没有给我们“意外”输出的部分,以便我们可以弄清楚问题是什么,真的,并列出三种情况,你可以得到“这些奇怪的符号”:

  1. 地图的键或值是某种类型的集合。然后集合的toString方法将打印其内容,例如[1][1,2,3]
  2. 地图的键或值是一个数组。然后,Object的{​​{1}}方法将打印对象类型和地址,例如toString是一个字符串数组。
  3. 地图的键或值为[Ljava.lang.String;@19821f,其中包含String个,或其他[]方法打印toString s的对象类型。

答案 1 :(得分: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()方法,这就是列表显示的方式。

答案 2 :(得分:-1)

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