黑马程序员技术交流社区
标题:
集合的综合应用题
[打印本页]
作者:
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