遍历集合、集合转换

2 篇文章 0 订阅
2 篇文章 0 订阅

一、遍历集合

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());
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值