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之间的转换
-
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(); } } }
-
-
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 扩展
- 了解一下枚举集合EnumSet、EnumMap
- 了解一下泛型
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 扩展
- 了解一下枚举集合EnumSet、EnumMap
- 了解一下泛型
- 了解一下Hash算法、红黑树算法

被折叠的 条评论
为什么被折叠?



