黑马程序员技术交流社区

标题: 集合的综合应用题 [打印本页]

作者: wyh2016    时间: 2016-12-13 01:55
标题: 集合的综合应用题
4.分析以下需求,并用代码实现:
        (1)有类似这样的字符串:"1.2,3.4,5.6,7.8,5.56,44.55"请按照要求,依次完成以下试题
        (2)以逗号作为分隔符,把已知的字符串分成一个String类型的数组,数组中的每一个元素类似于"1.2","3.4"这样的字符串
        (3)把数组中的每一个元素以"."作为分隔符,把"."左边的元素作为key,右边的元素作为value,封装到Map中,Map中的key和value都是Object类型
        (注意, 这里有5.6与5.56两个数字, 这样切分出来后会有两个相同的key, 值都为5, 思考一下,这里应该怎么做才能将这两个key都保留???)
        (4)把map中的key封装在Set中,并把Set中的元素输出
        (5)把map中的value封装到Collection中,把Collection中的元素输出
public static void main(String[] args) {
                String s="1.2,3.4,5.6,7.8,5.56,44.55";
                TreeMap<Object,Object>tm=new TreeMap<>(new Comparator<Object>() {

                        @Override
                        public int compare(Object o1, Object o2) {
                                return 1;
                        }
                });
                String []arr=s.split(",");
                for (int i = 0; i < arr.length; i++) {
                        //遍历字符串数组,把每个字符串再次切割
                        String[] newarr=arr[i].split("\\.");
                        //把切割后的字符串当作集合的键和值进行判断,如果键存在,就不添加,否则添加到集合中;
                        if(!tm.keySet().contains(newarr[0])){
                                tm.put(newarr[0], newarr[1]);
                        }
                }
                //创建Treeset 存储键
                TreeSet<Object>ts=new TreeSet<>(new Comparator<Object>() {

                        @Override
                        public int compare(Object o1, Object o2) {
                               
                                return 1;
                        }
                });
                //创建list用来存储值
                ArrayList<Object> list = new ArrayList<>();
                //获取键值对对象
                Set<Entry<Object,Object>> entrySet = tm.entrySet();
                //获取迭代器
                Iterator<Entry<Object,Object>>it=entrySet.iterator();
                while(it.hasNext()){
                        //获取每一个键值对
                        Entry<Object,Object>en=it.next();
                        //通过键值对获取键
                        Object key=en.getKey();
                        //通过键获取值
                        Object value=en.getValue();
                        //分别添加到集合
                        ts.add(key);
                        list.add(value);
                }
                /*for (Entry<Object, Object> entry : entrySet) {
                        ts.add(entry.getKey());
                        list.add(entry.getValue());
                }*/
                //遍历输出
                for(Object key : ts) {
                        System.out.print(key + " ");
                }
               
                System.out.println();
                for(Object obj : list) {
                        System.out.print(obj + " ");
                }

       
                       
                       
        }

}






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