A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

.

© 冯祖焱 黑马帝   /  2012-2-15 19:41  /  2265 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 冯祖焱 于 2017-8-16 09:55 编辑

                                                             .

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

5 个回复

倒序浏览
  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?

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

回复 使用道具 举报
黄秋 发表于 2012-2-15 20:34
程序这样是可以,但不明白:不用temp, m.put(l,m.get(l).add(l)); 编译出错,why?

谢谢兄弟
因为List.add()返回的是boolean
回复 使用道具 举报
冯祖焱 发表于 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:13
想明白了,现优化成这样:
for(String l :list){                       
        if(m.containsKey(l)){

这个好,谢谢
回复 使用道具 举报
本帖最后由 黄秋 于 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. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马