如何在下一行打印与单键关联的值?

时间:2018-02-11 09:50:41

标签: java hashmap

输出应该如何:

India

Karnataka Belgaum

          Bangalore

Maharashtra Pune

         Mumbai

我如何得到:

[印度]

卡纳塔克邦[Belgaum,Bangalore]

Maharashtra [Pune,Mumbai]

 public static void main(String[] args) {
    // TODO Auto-generated method stub
    ArrayList l1= new ArrayList();
    l1.add("Belgaum");
    l1.add("Bangalore");
    ArrayList l2 = new ArrayList<>();
    l2.add(""+"India");
    System.out.print("       ");
    System.out.println(l2);

    ArrayList l3= new ArrayList();
    l3.add("Pune");
    l3.add("Mumbai");

    HashMap hashmap = new HashMap();
    hashmap.put("Karnataka", l1);
    hashmap.put("Maharashtra",l3);

    Set s1=hashmap.entrySet();

    Iterator i1=s1.iterator();
    while(i1.hasNext()){
    Map.Entry m1=(Map.Entry)i1.next();
    System.out.println(m1.getKey()+"    "+m1.getValue()+"\n");
    }
}

}

有没有办法让输出如上所示?

如何删除与值相关联的[],我知道它是一个Arraylist所以java put []在列表之前和之后

1 个答案:

答案 0 :(得分:2)

public static void main(String[] args) {
        // TODO Auto-generated method stub
        ArrayList l1= new ArrayList();
        l1.add("Belgaum");
        l1.add("Bangalore");

        ArrayList l2 = new ArrayList<>();
        l2.add(""+"India");
        System.out.print("       ");
        System.out.println(l2.get(0));

        ArrayList l3= new ArrayList();
        l3.add("Pune");
        l3.add("Mumbai");

        HashMap hashmap = new HashMap();
        hashmap.put("Karnataka", l1);
        hashmap.put("Maharashtra",l3);

        Set s1=hashmap.entrySet();

        Iterator i1=s1.iterator();
        while(i1.hasNext()){
            Map.Entry m1=(Map.Entry)i1.next();
            String tmpStr = m1.getKey().toString();
            ArrayList<String> tmpList = (ArrayList<String>) m1.getValue();
            for (String s : tmpList){
                tmpStr = tmpStr + " " + s;
            }
            System.out.println(tmpStr);
        }
    }

我使用了几个不同的机制,比如增强的迭代器和构建字符串,所以你可以看到你使用的不同的方法,这是一个草案,虽然它有效,你可以修改它并以多种方式改变它

我的建议是使用具有显式类型的ArrayList,例如

ArrayList<String> l1 = new ArrayList()