黑马程序员技术交流社区

标题: . [打印本页]

作者: 冯祖焱    时间: 2012-2-15 19:41
标题: .
本帖最后由 冯祖焱 于 2017-8-16 09:55 编辑

                                                             .
作者: 黄秋    时间: 2012-2-15 20:34
  1. import java.util.*;

  2. class  Test
  3. {
  4.         public static void main(String[] args){
  5.                 List<String> list=new ArrayList<String>();
  6.                 list.add("21");
  7.                 list.add("21");
  8.                 list.add("29");
  9.                 list.add("23");
  10.                 list.add("06");
  11.                 list.add("12");
  12.                 list.add("21");
  13.                 list.add("06");
  14.                 list.add("26");
  15.                 list.add("19");
  16.                 Map<String,List<String>> m = new HashMap<String,List<String>>();
  17.                 for(String l :list){
  18.                         List<String> temp=new ArrayList<String>();
  19.                         if(m.containsKey(l)){
  20.                                 temp=m.get(l);
  21.                         }
  22.                         temp.add(l);
  23.                         m.put(l,temp);                       
  24.                 }
  25.                 System.out.println(m);
  26.         }       
  27. }
复制代码
程序这样是可以,但不明白:不用temp, m.put(l,m.get(l).add(l)); 编译出错,why?
作者: 冯祖焱    时间: 2012-2-15 20:47
黄秋 发表于 2012-2-15 20:34
程序这样是可以,但不明白:不用temp, m.put(l,m.get(l).add(l)); 编译出错,why?

谢谢兄弟
因为List.add()返回的是boolean
作者: 黄秋    时间: 2012-2-15 21:13
冯祖焱 发表于 2012-2-15 20:47
谢谢兄弟
因为List.add()返回的是boolean

想明白了,现优化成这样:
for(String l :list){                       
        if(m.containsKey(l)){
                m.get(l).add(l);
        }
        else{
                List<String> temp=new ArrayList<String>();
                temp.add(l);
                m.put(l,temp);
        }       
}

作者: 冯祖焱    时间: 2012-2-15 21:18
黄秋 发表于 2012-2-15 21:13
想明白了,现优化成这样:
for(String l :list){                       
        if(m.containsKey(l)){

这个好,谢谢
作者: 黄秋    时间: 2012-2-15 22:17
本帖最后由 黄秋 于 2012-2-15 22:23 编辑
冯祖焱 发表于 2012-2-15 21:18
这个好,谢谢


还可以这样,不过不好理解:
  1. for(final String l :list){                        
  2.         if(m.containsKey(l))  m.get(l).add(l);
  3.         else                  m.put(l,new ArrayList<String>(){{add(l);}});
  4. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2