第一章此次内容
1.1.1.Java集合框架中常用接口及特征
1.1.
2.使用ArrayList存取数据
1.1.3.使用HashMap存取数据
1.1.4.Java中的泛型机制
第二章具体内容
2.1. 为什么要有集合
2.1.1.Java中的例子
2.1.2.package com.aaa.collection;
2.1.
3./**
2.1.4.* @author ky
2.1.5.* @version 创建时间:2019年8月9日
2.1.6.* 希望有一个容器可以存储班级的20名学生的信息2.1.7.* 声明一个长度为20的数组
2.1.8.* 我们使用随机数的方式给他们赋值算是20名学生
的信息
2.1.9.* 但是此时转班过来了三名同学,那么这个时候我们
要存储23名学生的成绩
2.1.10.* 此时我们应该怎么办?
2.1.11.* 1.对数组扩容
2.1.12.* 2.使用集合
2.1.1
3.*/
2.1.14.public class AAAClass {
2.1.14.1. public static void main(String[] args) {
2.1.14.1.1.int[] arr = new int[20];
2.1.14.1.2.for (int i = 0; i < arr.length; i++) {
2.1.14.1.2.1. arr[i] = (int)(Math.random() * 10);
2.1.14.1.
3.}
2.1.14.1.4.for (int i : arr) {
2.1.14.1.4.1. System.out.print(i + " ");
2.1.14.1.5.}
2.1.14.2. }
2.1.14.
3.
2.1.15.}
2.2. 集合的特性
2.3. 只能存放引用数据类型
2.4. 容量没有限制
2.5. 由于集合的种类很多,不同的类有不同的特性,我们在使
用的时候可以根据不同的需求对集合选择
2.6. 集合都有哪些种类
2.6.1.集合主要分为两类
2.6.2.
2.7. Collection学习
2.8. package com.aaa.collection;
2.9. import java.util.ArrayList; 2.10. import java.util.Collection;
2.11. /**
2.12. * @author ky
2.1
3. * @version 创建时间:2019年8月9日
2.14. * Collection
2.15. * public interface Collection
Iterable
2.16. * 1.首先它是接口,其他他有父类
2.17. *
2.18. *Collection两个主要的子接口list,set
2.19. * 如果去创建一个Collection家族的集合?
2.20. * 要找实现类这次主要用ArrayList
2.21. *
2.22. * Collection定义了很多方法方法学习
2.2
3. * 增加元素的方法
2.24. * boolean add(E e) 把参数假如对象集合,返回
值代表是否增加成功在这里里边E是泛型先不管
2.25. * boolean addAll(Collection extends E> c)
将指定集合中的所有元素添加到此集合(可选操作)2.26. * 移除元素的方法
2.27. * void clear() 从此集合中删除所有元素(可选
操作)。
2.28. * boolean remove(Object o) 从该集合中删除
指定元素的单个实例(如果存在)(可选操作)。
2.29. * boolean removeAll(Collection> c) 删除指
定集合中包含的所有此集合的元素(可选操作)。
2.30. * boolean retainAll(Collection> c) 仅保留
此集合中包含在指定集合中的元素(可选操作)。(你有的我才有你没有的我不留)
2.31. * 获取元素的方法
2.32. * 查找元素的方法
2.3
3. * boolean contains(Object o) 如果此集合包
含指定的元素,则返回true 。
2.34. * boolean containsAll(Collection> c) 如果
此集合包含指定集合中的所有元素,则返回true。
2.35. * boolean isEmpty() 如果此集合不包含元素,
则返回true 。是否为空
2.36. * 比较的方法
2.37. * boolean equals(Object o) 将指定的对象与
此集合进行比较以获得相等性。
2.38. * 操作的方法
2.39. * int size() 返回此集合中的元素数。
2.40. * Object[] toArray() 返回一个包含此集合中所
有元素的数组。
2.41. *
2.42. */
2.4
3. public class TestCollection {
2.4
3.1.@SuppressWarnings({ "rawtypes", "unchecked" }) 2.43.2.public static void main(String[] args) {
2.4
3.2.1. //利用实现得到了一个Collection对象
2.4
3.2.2. Collection coll = new ArrayList();
2.4
3.2.3. Collection coll1 = new ArrayList();
2.4
3.2.
4. boolean b = coll.add("你好");
2.4
3.2.5. coll.add("你好1");
2.4
3.2.6. coll.add("你好2");
2.4
3.2.7. coll.add("你好3");
2.4
3.2.8. coll1.add("nihao1");
2.4
3.2.9. coll1.add("nihao2");
2.4
3.2.10. c oll1.add("nihao3");
2.44. // coll.addAll(coll1);
2.45. // System.out.println(coll);
2.46. // coll1.clear();
2.47. // boolean res = coll.contains("你好21");
2.48. // boolean res = coll.containsAll(coll1);
2.49. // boolean res = coll.equals(coll1);
2.50. // boolean res = coll.isEmpty();
2.51. // boolean res = coll.remove("你好3");
2.51.1.1. System.out.println(coll.toArray());
2.51.2.}
2.52. }
2.5
3. List学习
2.5
3.1.List的特点(他的特点是相对于set来说的) 2.53.2.不唯一可以有重复的元素
2.5
3.3.有序,保证了插入时的顺序
2.5
3.
4.有索引,索引从0开始
2.5
3.5.List方法学习
2.54. package com.aaa.ky;
2.55. import java.util.ArrayList;
2.56. import java.util.Collection;
2.57. import java.util.List;
2.58. /**
2.59. * @author ky
2.60. * @version 创建时间:2019年8月12日
2.61. * List学习
2.62. * boolean add(E e) 将指定的元素追加到此列表
的末尾(可选操作)。
2.6
3. * void add(int index, E element) 将指定的元素插
入此列表中的指定位置(可选操作)。
2.64. * boolean addAll(Collection extends E> c) 按
指定集合的迭代器(可选操作)返回的顺序将指定集合中的所有元素附加到此列表的末尾。
2.65. * void clear() 从此列表中删除所有元素(可选操
作)。
2.66. * boolean contains(Object o) 如果此列表包含
指定的元素,则返回true 。
2.67. * boolean containsAll(Collection> c) 如果此
列表包含指定集合的所有元素,则返回true。
2.68. * boolean equals(Object o) 将指定的对象与此列
表进行比较以获得相等性。
2.69. * E get(int index) 返回此列表中指定位置的元素。
2.70. * int indexOf(Object o) 返回此列表中指定元素的
第一次出现的索引,如果此列表不包含元素,则返回-1。
2.71. * boolean isEmpty() 如果此列表不包含元素,则返
回true 。
2.72. * E remove(int index) 删除该列表中指定位置的元
素(可选操作)。
2.7
3. * boolean remove(Object o) 从列表中删除指定
元素的第一个出现(如果存在)(可选操作)。
2.74. * boolean removeAll(Collection> c) 从此列
表中删除包含在指定集合中的所有元素(可选操作)。
2.75. * boolean retainAll(Collection> c) 仅保留此
列表中包含在指定集合中的元素(可选操作)。
2.76. * E set(int index, E element) 用指定的元素(可选
操作)替换此列表中指定位置的元素。
2.77. * int size() 返回此列表中的元素数。
2.78. * Object[] toArray() 以正确的顺序(从第一个到最
后一个元素)返回一个包含此列表中所有元素的数组。
2.79. *
含此列表中所有元素的数组(从第一个到最后一个元素);
2.80. * 返回的数组的运
行时类型是指定数组的运行时类型。
2.81. *
2.82. */
2.8
3. public class ListTest {
2.8
3.1.@SuppressWarnings({ "rawtypes", "unchecked" }) 2.83.2.public static void main(String[] args) {
2.8
3.2.1. Collection coll = new ArrayList();
2.8
3.2.2. coll.add("abc1");
2.8
3.2.3. coll.add("abc2");
2.8
3.2.
4. coll.add("abc3");
2.8
3.2.5. System.out.println(coll);
2.8
3.2.6. List list = new ArrayList();
2.8
3.2.7. System.out.println(list);
2.8
3.2.8. list.add(coll);
2.8
3.2.9. System.out.println(list);
2.8
3.2.10. l ist.add("aaa1");
2.8
3.2.11. l ist.add("aaa2");
2.8
3.2.12. l ist.add("aaa3");
2.8
3.2.13. S ystem.out.println(list);
2.84. // list.clear();
2.85. // System.out.println(list);
2.86. // boolean b = list.contains("aaa1");
2.87. // System.out.println(b);
2.87.1.1. list.set(0, "hello");
2.87.1.2. System.out.println(list);
2.87.1.
3. Object[] objs = list.toArray();
2.87.1.4. System.out.println(objs);
2.87.1.5. String[] strs = (String[]) list.toArray(new String[0]);
2.87.1.6. System.out.println(strs);
2.87.2.}
2.88. }
2.88.1.List如何遍历
2.88.2.遍历的第一种方法
2.88.2.1. 因为List有get(0) 方法,所以我们可以使用for循环的方
式去取数据
2.88.2.2.
2.88.
3.遍历的第二种方法(迭代器)
2.88.
3.1. 我们通过iterator()方法,获取一个Iterator对象
2.88.
3.2.
2.88.
3.3. 我们通过这些方法去遍历获取list里边所有的元素
2.88.
3.3.1.
2.88.4.遍历的第三种方法
2.88.4.1. 增强for循环foreach
2.88.5.使用迭代器的速度比较快,get方法太慢,不推荐,在
不需要更改集合的的时候,可以使用foreach
2.88.6.List的实现类
2.88.7.ArrayList
2.88.7.1. package com.aaa.ky;
2.88.7.2. import java.util.ArrayList;
2.88.7.
3. /**
2.88.7.4. * @author ky
2.88.7.5. * @version 创建时间:2019年8月12日
2.88.7.6. * ArrayList学习
2.88.7.7. * ArrayList的特性及方法的底层实现
2.88.7.8. * 特性:是针对以LinkedList
2.88.7.9. * 1.ArrayList查询效率高
2.88.7.10. * 2.ArrayList增删效率低
2.88.7.11. *ArrayList的底层实现
2.88.7.12. *依靠于数组
2.88.7.1
3. *方法实现
2.88.7.14. *add方法的实现
2.88.7.15. *ensureCapacityInternal(size + 1); 查看是否
要,扩容
2.88.7.16. *elementData[size++] = e; 数组赋值
2.88.7.17. *每次都会判断底层的数组elementData需不需
要扩容,如果需要就扩容,如果不需要就直接添加值
2.88.7.18. *get方法
2.88.7.19. *在获取前先去找是否越界,如果越界直接抛出异
常
2.88.7.20. *remove方法
2.88.7.21. *就是生成一个数组,把elementData数组中出去
要移除的元素,其余的都copy过去
2.88.7.22. */
2.88.7.2
3. p ublic class ArrayListTest {
2.88.7.2
3.1.@SuppressWarnings("rawtypes")
2.88.7.2
3.2.public static void main(String[] args) {
2.88.7.2
3.2.1. ArrayList arrList = new ArrayList();
2.88.7.2
3.2.2. arrList.add("123");
2.88.7.2
3.2.3. arrList.get(2);
2.88.7.2
3.2.
4. arrList.remove(0);
2.88.7.2
3.3.}
2.88.7.24. }
2.88.7.25. A rrayList需要注意的是扩容的问题2.88.8.Vector
2.88.8.1. Vector学习
2.89. package com.aaa.ky;
2.90. import java.util.Vector;
2.92. * @author ky
2.9
3. * @version 创建时间:2019年8月12日
2.94. * Vector学习
2.95. * int capacity() 返回此向量的当前容量。
2.96. * int size() 返回此向量中的组件数。
2.97. * boolean isEmpty() 测试此矢量是否没有组件。
2.98. * E get(int index) 返回此向量中指定位置的元素。
2.99. */
2.100. public class VectorTest {
2.100.1.@SuppressWarnings("rawtypes")
2.100.2.public static void main(String[] args) {
2.100.2.1. V ector vector = new Vector();
2.100.2.2. S ystem.out.println(vector.capacity());
2.100.2.
3. S ystem.out.println(vector.size());
2.100.
3.}