1、集合

集合专题 - 图1

1.1、集合的理解和好处

之前保存数据都是用的数组,那么数组有不足的地方,分析如下:
数组缺点:

  • 长度开始时必须指定,而且一旦指定,不能更改
  • 保存的必须为同一类型的元素
  • 使用数组进行增加元素的示意代码 - 比较麻烦 ```java // 写出Person数组扩容示意代码 Person[] pers = new Person[1]; // 大小是1 per[0] = new Person();

// 此时数组已满,增加新的person对象: Person[] pers2 = new Person[pers.length + 1]; for(){} // 循环将pers数组的东西拷进去 pers2[1] = new Person();

// 第二种数组拷贝的方法 使用System.arraycopy()方法 // 源数组 Integer[] integers = new Integer[5]; for (int i = 0; i < integers.length; i++){ integers[i] = i; } // 新的目标数组 Integer[] newIntegers = new Integer[10]; // 参数 1.拷贝源, 2.源的起点, 3.目标, 4.目标的起点, 5.要拷贝多长 // 新的数组中,没有被使用的元素为 null System.arraycopy(integers,0,newIntegers,0,integers.length);

  1. <a name="721a05de"></a>
  2. ### 1)集合概念
  3. 1. 可以**动态保存**任意多个对象,使用比较方便。
  4. 1. 提供了一系列方便的操作对象的方法:add(),remove(),set(),get()
  5. 1. 使用集合添加,删除新元素的实例代码更加间接明了
  6. <a name="XW19Q"></a>
  7. ## 1.2、Collection继承图
  8. ![未命名图片.png](https://cdn.nlark.com/yuque/0/2021/png/12374561/1616313586544-ba8acaea-caa6-4d89-90aa-ea02735513c6.png#height=862&id=iXRVu&margin=%5Bobject%20Object%5D&name=%E6%9C%AA%E5%91%BD%E5%90%8D%E5%9B%BE%E7%89%87.png&originHeight=862&originWidth=1303&originalType=binary&ratio=1&size=185676&status=done&style=none&width=1303)
  9. <a name="35bd751f"></a>
  10. ## 1.3、Map继承图
  11. ![未命名图片.png](https://cdn.nlark.com/yuque/0/2021/png/12374561/1616394765514-f69320ce-e8a8-4bbe-abba-697946036cef.png#height=791&id=aPVcY&margin=%5Bobject%20Object%5D&name=%E6%9C%AA%E5%91%BD%E5%90%8D%E5%9B%BE%E7%89%87.png&originHeight=791&originWidth=1251&originalType=binary&ratio=1&size=185676&status=done&style=none&width=1251)
  12. <a name="hbeq5"></a>
  13. ## 1.4、Collection接口和常用方法
  14. <a name="cMQCU"></a>
  15. ### 1)Collection接口实现类的特点
  16. 1. collection实现子类可以存放多个元素,每个元素可以是Object
  17. 1. 有些Collection的实现类,可以存放重复的元素,有些不可以
  18. 1. 有些Collection的实现类,有些事有序的 List, 有些不是有序的Set
  19. 1. Collection接口没有直接的实现子类,是通过他的子接口Set和List来实现的。
  20. <a name="ztJOc"></a>
  21. ### 2)常用方法
  22. 1. **add**(元素) 添加一个元素
  23. 1. **remove**(元素) 删除一个元素,返回一个boolean || **remove**(索引) 返回被删除的元素
  24. 1. **contains**(元素) 查找该元素是否存在
  25. 1. **size**() 获取元素个数
  26. 1. **isEmpty**() 判断是否为空
  27. 1. **clear**() 清空
  28. 1. **addAll**(Collection对象) 添加多个元素
  29. 1. **containsAll**(Collection对象) 查找多个元素
  30. 1. **removeAll**(Collection对象) 删除多个元素
  31. ```java
  32. // 创建一个集合
  33. Collection collection = new ArrayList();
  34. // add() 添加一个元素
  35. collection.add(1);
  36. collection.add(2);
  37. // remove()删除指定元素
  38. collection.remove(1);
  39. // contains() 查找元素是否存在
  40. boolean contains = collection.contains(2);
  41. // size() 获取元素个数
  42. int size = collection.size();
  43. // isEmpty() 判断是否为空
  44. boolean empty = collection.isEmpty();
  45. // clear() 清空集合
  46. collection.clear();
  47. // addAll() 添加多个元素
  48. Collection collection1 = new ArrayList();
  49. collection1.add(11);
  50. collection1.add(22);
  51. collection1.add(33);
  52. collection.addAll(collection1);
  53. // containsAll(Collection对象) 查找多个元素是否都存在
  54. boolean b = collection.containsAll(collection1);
  55. // removeAll(Collection对象) 删除多个元素
  56. collection.removeAll(collection);

注意
  • 集合中存储的都是引用地址,往里面存入1 实则是存入 new Integer(1); 自动装箱

3)Collection接口遍历元素方式1 - itreator

基本介绍

  1. Iterator对象称为迭代器,主要用于遍历Collection集合中的元素
  2. 所有实现了Collection接口的集合类都有一个iterator()方法,用以返回一个实现了Iterator接口的对象,既可以返回一个迭代器。
  3. Itreator 仅仅用来遍历集合,Iterator本身并不存放对象。