【java】集合知识点汇总(持续更新)

【java】集合知识点汇总(持续更新)_第1张图片

                                                       图1.0

一、最上层开始(Collection)

1、集合和数组的区别?

A:长度区别

数组固定

集合可变

B:内容区别

数组可以是基本类型,也可以是引用类型

集合只能是引用类型

C:元素内容

数组只能存储同一种类型

集合可以存储不同类型(其实集合一般存储的也是同一种类型)

2、集合的继承体系结构?

        如图1.0

3、Collection的功能概述。

详见jdk文档,搜collection,链接稍后补齐

【java】集合知识点汇总(持续更新)_第2张图片

 

A:添加功能

(1)boolean add(Object object):添加一个元素

(2)boolean addAll(Collection c):添加一个集合的元素。

B:删除功能(remove,removeAll,clear,removeIf(jdk1.8))

(1)void clear():移除所有元素。

(2)boolean remove(Object o):移除一个元素。

(3)boolean removeAll(Collection c):移除一个集合的元素。(是一个还是所有)

(4)removeIf(jdk1.8)

C:判断功能

 (1)boolean contains(Object o):判断集合中是否包含指定的元素。
 (2)boolean containsAll(Collection c):判断集合中是否包含指定的集合元素。(是一个还是所有)
 (3)boolean isEmpty():判断集合是否为空。 

(4)boolean  equals(Object o) 将指定的对象与此集合进行比较以获得相等性。   (jdk1.8)

D:获取功能

Iterator iterator()

E:长度功能

int size():元素的个数。

F:交集(了解)

boolean retainAll(Collection c):两个集合都有的元素?

G:把集合转数组(了解)

Object[] toArray():

4Collection集合的遍历

A:把集合转数组(了解)

B:迭代器(集合专用方式)

5、迭代器

A:是集合的获取元素的方式。

B:是依赖于集合而存在的。

C:迭代器的原理和源码。

a:为什么定义为了一个接口而不是实现类?

b:看了看迭代器的内部类实现。

6、Collection集合的案例(遍历方式 迭代器)

集合的操作步骤:

A:创建集合对象

B:创建元素对象

C:把元素添加到集合

D:遍历集合

A:存储字符串并遍历
			import java.util.Collection;
			import java.util.ArrayList;
			import java.util.Iterator;
			
			public class CollectionDemo {
				public static void main(String[] args) {
					//创建集合对象
					Collection c = new ArrayList();
					
					//创建并添加元素
					c.add("hello");
					c.add("world");
					c.add("java");
					
					//遍历集合
					Iterator it = c.iterator();
					while(it.hasNext()) {
						String s =(String) it.next();
						System.out.println(s);
					}
				}
			}
		
		B:存储自定义对象并遍历
			public class Student {
				private String name;
				private int age;
				
				public Student(){}
				
				public Student(String name,int age) {
					this.name = name;
					this.age = age;
				}
				
				//getXxx()/setXxx()
			}
			
			import java.util.Collection;
			import java.util.ArrayList;
			import java.util.Iterator;
			
			public class StudentDemo {
				public static void main(String[] args) {
					//创建集合对象
					Collection c = new ArrayList();
					
					//创建学生对象
					Student s1 = new Student("林青霞",27);
					Student s2 = new Student("风清扬",30);
					Student s3 = new Student("刘意",30);
					Student s4 = new Student("武鑫",25);
					Student s5 = new Student("刘晓曲",16);
					
					//添加元素
					c.add(s1);
					c.add(s2);
					c.add(s3);
					c.add(s4);
					c.add(s5);
					
					//遍历集合
					Iterator it = c.iterator();
					while(it.hasNext()) {
						Student s = (Student)it.next();
						System.out.println(s.getName()+"---"+s.getAge());
					}
				}
			}

一、List

1、List是Collection的子接口?

特点:有序(存储顺序和取出顺序一致),可重复。

2、List的特有功能:(自己补齐)

A:添加功能

B:删除功能

C:获取功能

D:迭代器功能

E:修改功能

3、List集合的特有遍历功能

A:由size()和get()结合。

B:代码演示

//创建集合对象
					List list = new ArrayList();
					
					//创建并添加元素
					list.add("hello");
					list.add("world");
					list.add("java");
					
					//遍历集合
					Iterator it = list.iterator();
					while(it.hasNext()) {
						String s =(String) it.next();
						System.out.println(s);
					}
					System.out.println("----------");
					
					for(int x=0; x

4、列表迭代器的特有功能;(了解)

可以逆向遍历,但是要先正向遍历,所以无意义,基本不使用。

5、并发修改异常

A:出现的现象

迭代器遍历集合,集合修改集合元素

B:原因

迭代器是依赖于集合的,而集合的改变迭代器并不知道。

C:解决方案

a:迭代器遍历,迭代器修改(ListIterator)

元素添加在刚才迭代的位置

b:集合遍历,集合修改(size()和get())

元素添加在集合的末尾

6、常见数据结构

A:栈 先进后出

B:队列 先进先出

C:数组 查询快,增删慢

D:链表 查询慢,增删快

7、List的子类特点(面试题)

ArrayList

底层数据结构是数组,查询快,增删慢。

线程不安全,效率高。

Vector

底层数据结构是数组,查询快,增删慢。

线程安全,效率低。

LinkedList

底层数据结构是链表,查询慢,增删快。

线程不安全,效率高。

 

到底使用谁呢?看需求?

分析:

要安全吗?

要:Vector(即使要,也不使用这个,后面再说)

不要:ArrayList或者LinkedList

查询多;ArrayList

增删多:LinkedList

 

什么都不知道,就用ArrayList。

8、List集合的案例(遍历方式 迭代器和普通for)

A:存储字符串并遍历

B:存储自定义对象并遍历

Set

1、Set集合的特点

无序,唯一

2、HashSet集合(掌握)

A:底层数据结构是哈希表(是一个元素为链表的数组)

B:哈希表底层依赖两个方法:hashCode()和equals()

  执行顺序:

首先比较哈希值是否相同

相同:继续执行equals()方法

返回true:元素重复了,不添加

返回false:直接把元素添加到集合

不同:就直接把元素添加到集合

C:如何保证元素唯一性的呢?

由hashCode()和equals()保证的

D:开发的时候,代码非常的简单,自动生成即可。

E:HashSet存储字符串并遍历

F:HashSet存储自定义对象并遍历(对象的成员变量值相同即为同一个元素)

3、TreeSet集合

A:底层数据结构是红黑树(是一个自平衡的二叉树)

B:保证元素的排序方式

a:自然排序(元素具备比较性)

让元素所属的类实现Comparable接口

b:比较器排序(集合具备比较性)

让集合构造方法接收Comparator的实现类对象

C:把我们讲过的代码看一遍即可

(4)案例:

A:获取无重复的随机数

B:键盘录入学生按照总分从高到底输出

 

三、Collection集合总结(掌握)

【java】集合知识点汇总(持续更新)_第3张图片

1、针对Collection集合我们到底使用谁呢?(掌握)

唯一吗?

是:Set

排序吗?

是:TreeSet

否:HashSet

如果你知道是Set,但是不知道是哪个Set,就用HashSet。

 

否:List

要安全吗?

是:Vector

否:ArrayList或者LinkedList

查询多:ArrayList

增删多:LinkedList

如果你知道是List,但是不知道是哪个List,就用ArrayList。

 

如果你知道是Collection集合,但是不知道使用谁,就用ArrayList。

 

如果你知道用集合,就用ArrayList。

 

2、:在集合中常见的数据结构(掌握)

ArrayXxx:底层数据结构是数组,查询快,增删慢

LinkedXxx:底层数据结构是链表,查询慢,增删快

HashXxx:底层数据结构是哈希表。依赖两个方法:hashCode()和equals()

TreeXxx:底层数据结构是二叉树。两种方式排序:自然排序和比较器排序

 

你可能感兴趣的:(java笔记)