集合

简称集,是用来存储多个元素的容器

集合和数组的区别

元素类型:

集合:引用数据类型(存储基本类型时自动装箱)

数组:基本数据类型、引用类型

元素个数:

集合:不固定,可任意扩容

数组:固定,不可改变容量
不受容器大小限制,可以随时添加、删除元素
提供了大量操作元素的方法(判断,获取等)

Java的集合体系

单列集合(Collection)

List:ArrayList

Set:HashSet

双列集合(Map:key,value)

Map:HashMap

List集合:

特点:可重复、有序(存取顺序相同)

命令:List list = new ArrayList();

向集合中添加元素的方法:add()

遍历集合的方法:for循环

获得集合中的某个元素:.get()

获取集合中元素个数的方法:size()

增强for循环

  1. for(object o :list){
  2. System.out.println(o);
  3. }

即遍历集合输出

迭代器(Iterator)

对过程的重复,称为迭代

迭代器是遍历Collection集合的通用方式。可以在集合遍历的同时进行添加、删除操作。

常用方法

next():返回迭代的下一个元素对象

hasNext():如果仍有元素可以迭代,则返回true

列表迭代器(ListIterator)是List体系独有的遍历方式,可以在集合遍历的同时进行添加、删除等操作。
但是必须通过调用列表迭代器的方式来实现

**泛型

**
即泛指任意类型,又叫参数化类型。用来限制集合的元素类型

如list的添加list.add()是不受限制的,可以是任意数据类型,用泛型限制后,就只能添加某一种数据类型的元素

如List list = new ArrayList<>(); //只能添加String类型的元素

Collections工具类

针对集合进行操作的工具类

成员方法:

1)sort(List)根据元素的自然顺序,将指定列表按升序排序

2)max(Collection)返回集合的最大元素

3)reverse(List)反转List集合元素

4)shuffle(List)使用默认的随机源随机置换指定的列表(打乱)

Set集合

不可重复、无序

多次添加会自动依据equals()和hashCode()两种方法去重

  1. package cn.iproute.demo1;
  2. import java.util.Objects;
  3. public class Student {
  4. private int id;
  5. private String name;
  6. //无参构造与全参构造
  7. //get与set方法
  8. //toString方法
  9. //equals与hashCode方法 ... }
  1. package cn.iproute.demo1;
  2. import java.util.HashSet;
  3. import java.util.Iterator;
  4. import java.util.Set;
  5. public class Test {
  6. public static void main(String[] args) {
  7. Set<Student> set = new HashSet<>();
  8. Student s1 = new Student(1,"张三");
  9. Student s2 = new Student(2,"李四");
  10. Student s3 = new Student(3,"王二");
  11. Student s4 = new Student(3,"王二");
  12. set.add(s1);
  13. set.add(s2); //多次添加会自动依据equals()和hashCode()两种方法去重
  14. set.add(s3);
  15. set.add(s4);
  16. Iterator<Student> it = set.iterator(); //使用迭代器来遍历
  17. while (it.hasNext()){
  18. Student s = it.next();
  19. System.out.println(s);
  20. }
  21. System.out.println(set);
  22. for (Student student : set) {
  23. System.out.println(student); //打印顺序与添加顺序并不相同
  24. }
  25. }
  26. }

Map集合

双列集合,元素由键值对( Entry )构成

key 不可以重复, value 可以重复

向map集合中添加元素的方法为: put()
遍历集合的方式:

  1. 获取所有的key : keySet()
  2. 遍历 keySet ,通过 key 获取 value : get()

遍历 keySet 的方法: iterator()

  1. package cn.iproute.demo1;
  2. import java.util.HashMap;
  3. import java.util.Iterator;
  4. import java.util.Map;
  5. import java.util.Set;
  6. public class Test {
  7. public static void main(String[] args) {
  8. Map<Integer,Student> map = new HashMap<>();
  9. Student s1 = new Student(1,"张三");
  10. Student s2 = new Student(2,"李四");
  11. Student s3 = new Student(3,"张三");
  12. System.out.println(map.put(1,s2)); //利用键去覆盖数值的时候会返回被覆盖的值
  13. System.out.println(map.put(1,s1));
  14. map.put(2,s2);
  15. map.put(3,s3);
  16. System.out.println(map);
  17. Set<Integer> keys = map.keySet(); //获取map中的key,组成一个set集合
  18. Iterator<Integer> it = keys.iterator(); //将set集合变为一个迭代器
  19. while (it.hasNext()){ //遍历key组成的迭代器
  20. Integer key = it.next();
  21. System.out.println("key:"+ key +" value:"+map.get(key)); //打印结果
  22. }
  23. for (Integer integer : map.keySet()) { //使用for遍历所有的key
  24. System.out.println(map.get(integer));
  25. }
  26. for (Student value : map.values()) { //使用for遍历所有的value
  27. System.out.println(value);
  28. }
  29. }
  30. }