一、遍历集合
1、遍历List集合
// 1. 普通遍历方式
for (int i = 0; i < strList.size(); i++) {
System.out.println(strList.get(i));
}
// 2.增强的for循环
for (String str : strList) {
System.out.println(str);
}
// 3. 使用Iterator迭代器
Iterator<String> it = strList.iterator();
while (it.hasNext()) {
String str = (String) it.next();
System.out.println(str);
}
// 4. java8 Lambda方式
// strList.forEach(System.out::println);//和下面的写法等价
strList.forEach(str -> {
System.out.println(str);
});
2、遍历Map集合
//第一种遍历map的方法,通过加强for循环map.keySet(),然后通过键key获取到value值
for(String s:map.keySet()){
System.out.println("key : "+s+" value : "+map.get(s));
}
System.out.println("====================================");
//第二种只遍历键或者值,通过加强for循环
for(String s1:map.keySet()){//遍历map的键
System.out.println("键key :"+s1);
}
for(String s2:map.values()){//遍历map的值
System.out.println("值value :"+s2);
}
System.out.println("====================================");
//第三种方式Map.Entry<String, String>的加强for循环遍历输出键key和值value
for(Map.Entry<String, String> entry : map.entrySet()){
System.out.println("键 key :"+entry.getKey()+" 值value :"+entry.getValue());
}
System.out.println("====================================");
//第四种Iterator遍历获取,然后获取到Map.Entry<String, String>,再得到getKey()和getValue()
Iterator<Map.Entry<String, String>> it=map.entrySet().iterator();
while(it.hasNext()){
Map.Entry<String, String> entry=it.next();
System.out.println("键key :"+entry.getKey()+" value :"+entry.getValue());
}
//1:key,value都是object类型的
//2:key必须是唯一的,不唯一,那么后面的value会把前面的value覆盖
//3:对于HashMap,key可以为空
//4:value可以为空,也可以为空
//5:HashTable的key和value不能为空
//6:properties的key和value必须为String类型的
//三个集合:key的集合、value的集合、键值对的集合
Set<String> keys=map.keySet();
for(String s:keys){
System.out.println(s);
}
System.out.println("=============================");
Collection<String> values=map.values();//值的集合
System.out.println(values);
System.out.println("=============================");
Set<Map.Entry<String, String>> entrys=map.entrySet();//键值对的集合
for(Map.Entry<String, String> entry:entrys){
System.out.println(entry.getKey()+" "+entry.getValue());
}
3、List和Map之间的相互转换
1)List转换成Map
//1.将List中数据放入Map,使用Student的id属性作为key
List<Student> list = new ArrayList<Student>();
Map<Integer, Student> map = new HashMap<Integer, Student>();
// 也可以换成其他的遍历方式
Iterator<Student> it = list.iterator();
while(it.hasNext()){
Student stu = it.next();
map.put(stu.getId(), stu);
}
//2.遍历Map,输出每个Entry的key和value
Set<Entry<Integer,Student>> entrySet = map.entrySet();
for(Entry<Integer,Student> entry:entrySet){
System.out.println(entry.getKey()+"---->"+entry.getValue());
}
2)Map转换成List
//1.使用Student的id属性作为key,存入Map
Map<Integer, Student> map = new HashMap<Integer, Student>();
//2.创建List对象,每个元素类型是StudentEntry
List<StudentEntry> list = new ArrayList<StudentEntry>();
//3.将Map对象转化为List集合
for (Entry<Integer, Student> entry : map.entrySet()) {
StudentEntry studentEntry = new StudentEntry();
// 将map中的一个映射关系,封装为一个studentEntry对象
studentEntry.setKey(entry.getKey());
studentEntry.setStu(entry.getValue());
// 将studentEntry对象List集合
list.add(studentEntry);
}
//4.遍历Map
for (StudentEntry se : list) {
System.out.println(se.getKey() + "\t" + se.getStu());
}
二、各种数据结构相互转
1、List转换为Array
List<String> list = new ArrayList<String>();
list.add("China");
list.add("France");
String [] countries = list.toArray(new String[list.size()]);
2、Array转换为List
String[] countries = {"China", "Switzerland", "Italy", "France"};
List list = Arrays.asList(countries);
3、Map转换为List
List<Value> list = new ArrayList<Value>(map.values());
4、Array转换为Set
String [] countries = {"shenzhen", "beijing", "guangzhou"};
Set<String> set = new HashSet<String>(Arrays.asList(countries));
System.out.println(set);
5、Map转换为Set
Map<Integer, String> sourceMap = createMap();
Set<String> targetSet = new HashSet<>(sourceMap.values());