当前位置:文档之家› Java学习笔记-第九章-Java集合框架(1)

Java学习笔记-第九章-Java集合框架(1)

Java学习笔记-第九章-Java集合框架(1)
Java学习笔记-第九章-Java集合框架(1)

第一章此次内容

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 extends

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 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 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. * T[] toArray(T[] a) 以正确的顺序返回一个包

含此列表中所有元素的数组(从第一个到最后一个元素);

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.}

相关主题
文本预览
相关文档 最新文档