11.集合之总结

1 collections工具类

  • 案例1:自然排序

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    
    public class Test {
    	public static void main(String[] args) {
    		//所有的集合插入的元素必须是引用类型,Integer类型是int类型的包装类,是int类型的引用类型
    		List<Integer> lists = new ArrayList<Integer>();
    		//虽然这里插入的是int类型的值,但是底层会在转换成Integer类型后存放到集合中
    		lists.add(1);
    		lists.add(5);
    		lists.add(8);
    		lists.add(58);
    		lists.add(7);
    		lists.add(88);
    		lists.add(48);
    		
    		//排序升序
    		Collections.sort(lists);
    		System.out.println(lists.toString());
    	}
    }
    

2 list与数组之间的互相转换

import java.util.Arrays;
import java.util.List;

public class day12 {
	public static void main(String[] args) {
		String names[] = new String[] {"张三","李四","王五","赵六"};
		//数组转换成list集合
		List<String> list  = Arrays.asList(names);
		//任意引用类型都可以toString()转换成数组
		System.out.println(list.toString());
		
		//list转换成数组
		String newNames[] = (String[])list.toArray();
		for (String name : newNames) {
			System.out.print(" "+name);
		}
	}
}

3 list和map之间的转换

  1. list转换成map

    • 工具类

      package day13.util;
      
      import java.util.HashMap;
      import java.util.List;
      import java.util.Map;
      
      import day13.Student;
      
      
      public class CollectionUtils {
      
      	public static Map<String, Student> getListTranToMap(List<Student> list) {
      		Map<String,Student> map = new HashMap<String,Student>();
      		for (Student student : list) {
      			map.put(student.getName(), student);
      		}
      		return map;
      	}
      
      }
      
    • Student类

      public class Student implements Comparable<Student>{
      	private String name;
      	private int age;
      	
      	public void showStudent(){
      		System.out.println("你好我是"+name+",年龄是:"+age);
      	}
      	
      	public Student() {
      		super();
      	}
      	public Student(String name, int age) {
      		super();
      		this.name = name;
      		this.age = age;
      	}
      	public String getName() {
      		return name;
      	}
      	public void setName(String name) {
      		this.name = name;
      	}
      	public int getAge() {
      		return age;
      	}
      	public void setAge(int age) {
      		this.age = age;
      	}
      
      	@Override
      	public int compareTo(Student stu) {
      		int num = this.age-stu.age;
      		return num;
      	}
      }
      
    • 测试

      import java.util.ArrayList;
      import java.util.List;
      import java.util.Map;
      
      import day13.util.CollectionUtils;
      
      public class Test {
      	public static void main(String[] args) {
      		Student stu1 = new Student("马云",45);
      		Student stu2 = new Student("马化腾",46);
      		Student stu3 = new Student("董明珠",47);
      		Student stu4 = new Student("章泽天",28);
      		
      		List<Student> list = new ArrayList<Student>();
      		list.add(stu1);
      		list.add(stu2);
      		list.add(stu3);
      		list.add(stu4);
      		//把list转换成map
      		Map<String,Student> map =CollectionUtils.getListTranToMap(list);
      		
      		for (Student student : map.values()) {
      			student.showStudent();
      		}
      	}
      }
      
  2. map转换成list

    • 工具类

      public static List<Student> getMapTranToList(Map<String,Student> map) {
      		List<Student> list = new ArrayList<Student>();
      		for (Student student : map.values()) {
      			list.add(student);
      		}
      		return list;
      	}
      
    • 测试

      import java.util.Hashtable;
      import java.util.List;
      import java.util.Map;
      
      import day13.util.CollectionUtils;
      
      public class Test1 {
      	public static void main(String[] args) {
      		Student stu1 = new Student("马云",45);
      		Student stu2 = new Student("马化腾",46);
      		Student stu3 = new Student("董明珠",47);
      		Student stu4 = new Student("章泽天",28);
      		
      		Map<String,Student> map = new Hashtable<String,Student>();
      		map.put(stu1.getName(), stu1);
      		map.put(stu2.getName(), stu2);
      		map.put(stu3.getName(), stu3);
      		map.put(stu4.getName(), stu4);
      		//map转换list
      		List<Student> list = CollectionUtils.getMapTranToList(map);
      		
      		for (Student student : list) {
      			student.showStudent();
      		}
      	}
      }
      

4 总结

  • 围绕3个集合接口来讲:List、set、map

  • ArrayList应用场景最广泛,用于大量的遍历有序可重复的数据的场景

  • ArrayList、linkesList、HashSet、TreeSet、HashMap这几个集合必须学会

  • hashXXX:都是以哈希算法存储的集合,无序

  • LinkedXXX:都是双向链表存储的集合,有序,会将值按照插入的顺序存储

  • TreeXXX:都是以红黑树算法存储的集合,有序,会按照排序方式排序后再存储,排序方式有自然排序和自定义排序规则。

5 扩展

  1. 了解一下枚举集合EnumSet、EnumMap
  2. 了解一下泛型
    pTranToList(Map<String,Student> map) {
    List list = new ArrayList();
    for (Student student : map.values()) {
    list.add(student);
    }
    return list;
    }
    
    * 测试
    
    ```java
    import java.util.Hashtable;
    import java.util.List;
    import java.util.Map;
    
    import day13.util.CollectionUtils;
    
    public class Test1 {
    	public static void main(String[] args) {
    		Student stu1 = new Student("马云",45);
    		Student stu2 = new Student("马化腾",46);
    		Student stu3 = new Student("董明珠",47);
    		Student stu4 = new Student("章泽天",28);
    		
    		Map<String,Student> map = new Hashtable<String,Student>();
    		map.put(stu1.getName(), stu1);
    		map.put(stu2.getName(), stu2);
    		map.put(stu3.getName(), stu3);
    		map.put(stu4.getName(), stu4);
    		//map转换list
    		List<Student> list = CollectionUtils.getMapTranToList(map);
    		
    		for (Student student : list) {
    			student.showStudent();
    		}
    	}
    }
    

2.7 总结

  • 围绕3个集合接口来讲:List、set、map

  • ArrayList应用场景最广泛,用于大量的遍历有序可重复的数据的场景

  • ArrayList、linkesList、HashSet、TreeSet、HashMap这几个集合必须学会

  • hashXXX:都是以哈希算法存储的集合,无序

  • LinkedXXX:都是双向链表存储的集合,有序,会将值按照插入的顺序存储

  • TreeXXX:都是以红黑树算法存储的集合,有序,会按照排序方式排序后再存储,排序方式有自然排序和自定义排序规则。

2.8 扩展

  1. 了解一下枚举集合EnumSet、EnumMap
  2. 了解一下泛型
  3. 了解一下Hash算法、红黑树算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值