java学习笔记:集合之集合与集合的嵌套
集合与集合的嵌套
----
1.ArrayList嵌套HashMap
题目1:需求:ArrayList集合嵌套HashMap集合,并遍历。
定义一个ArrayList集合,它包含三个元素,每一个元素都是HashMap类型的,每一个HashMap集合的键和值都是String类型的。
键:String 丈夫的姓名
值:String 妻子的姓名
数据:
第一个HashMap集合的元素:
孙策 大乔
周瑜 小乔
第二个HashMap集合的元素:
郭靖 黄蓉
杨过 小龙女
第三个HashMap集合的元素:
令狐冲 任盈盈
林平之 岳灵珊
代码:
//创建集合对象
ArrayList<HashMap<String, String>> array = new ArrayList<HashMap<String, String>>();
//创建元素1
HashMap<String, String> hm1 = new HashMap<String, String>();
hm1.put(" 孙策", "大乔");
hm1.put("周瑜", "小乔");
//把元素1添加到array中
array.add(hm1);
...//创建元素2、3,添加到array中
//遍历ArrayList集合
//遍历方法一:键找值
for(HashMap<String, String> hm : array){
Set<String> set = hm.keySet();
for(String key : set){
String value = hm.get(key);
System.out.println(key + "--" + value);
}
System.out.println("----");
}
题目2:对List进行去重
ArrayList<String> list = new ArrayList<String>();
list.add("小红");
...
HashSet<String> set = new HashSet<String>(list);//把ArrayList放到HashSet里,可以给元素去重
for(String s : set){
System.out.println(s);
}
ArrayList<String> list2 = new ArrayList<String>(set);//再把HashSet转回ArrayList
for(String s : list2){
System.out.println(s);
}
题目3:HashMap嵌套ArrayList
需求:HashMap集合嵌套ArrayList集合,并遍历
定义一个HashMap集合,它包含三个元素,每个元素的键是String类型,值是ArrayList类型。
键:String 人物来自哪部电视剧
值:ArrayList 人物的名称,每一个ArrayList集合的数据是String类型的
数据:
第一个ArrayList集合的元素:三国演义
诸葛亮
赵云
第二个ArrayList集合的元素:西游记
唐僧
孙悟空
第三个ArrayList集合的元素:水浒传
武松
鲁智深
代码:
//创建集合对象
HashMap<String, ArrayList<String>> hm = new HashMap<String, ArrayList<String>>();
//创建元素1
ArrayList<String> arr1 = new ArrayList<String>();
arr1.add("诸葛亮");
arr1.add("赵云");
//把元素1添加到hm中
hm.put("三国演义", arr1);
...//创建元素2、3,添加到hm
//遍历集合
//遍历方法一
Set<String> set = hm.keySet();
for(String key : set){
System.out.println(key);
ArrayList<String> value = hm.get(key);
for(String s : value){
System.out.println("\t" + s);
}
}
//遍历方法二:键值对对象找键和值
Set<Map.Entry<String, ArrayList<String>>> entrySet = map.entrySet();
for(Map.Entry<String, ArrayList<String>> entry : entrySet){
System.out.println(entry.getKey());
ArrayList<String> value = entry.getValue();
for(String s : value){
System.out.println("\t" + s);
}
}