List系列集合和Set系列集合

 一、List系列集合

1.特点 

2.特有方法 

 二、List集合的遍历

因为List集合有索引,所以可以用for循环遍历

 这些功能  List的实现类(LinkList、ArrayList)  都可以使用。

三、ArrayList集合的底层原理 

1.原理

2.适用场景 

 四、LinkList集合的底层原理

1.链表

2.链表特点 

2.1添加数据

2.2注意:

特点1:用索引查询也要重头开始找

2.3删除数据

3.单链表和双链表 

 

 双链表的特点

4.关于LinkLIst 

 

5.LinkList的适用场景 

1.用来设计队列

 

2. 用来设计栈

 push()和pop()的源码

//push方法源码
public void push(E e){
    addFist(e);
}

//pop方法源码
public E pop() {
    return removeFirst();
}

五、Test系列集合

1.特点和特有方法

2. 举例

不可以 Set<Integer> set = new Set<>();因为Set是一个接口,不可以直接new对象,必须用它的实现类

六、HashSet集合的底层原理(基于哈希表实现的)

1.哈希值

1.1认识哈希值

哈希值:一个int类型的数值,在java中每个对象都有一个哈希值

所有对象都可以调用Object类提供的hashCode方法,返回自己的哈希值

1.2哈希值的特点

 2.HashCode的底层原理

2.1哈希表

HashCode是基于哈希表实现的

哈希表是一种增删改查数据,性能都较好的数据结构

2.2原理

JDK8以前

横为数组,竖着的为链表 

 因此就可以解释为什么HashCode添加的元素无序、无索引、不重复以及增删改查数据快的原因了。(黑马基础140集)

问题:

 扩容 16*0.75

JDK8以后

 也是一种数据结构,此处不过多说明(140集)

2.3深入了解HashSet集合去重复机制

如下: 

七、LinkHashSet集合的底层原理

缺点: 但是每一个元素占内存较多

八.TreeSet集合的底层原理

 

九、总结 

十、 集合的并发修改异常

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class CollectionTest1 {
	public static void main(String[] args) {
		// 掌握集合的并发修改异常
		List<String> list = new ArrayList<>();
		list.add("小王");
		list.add("小李");
		list.add("李哥");
		list.add("小刘");
		list.add("李明");
		list.add("李鸿章");
		//要求去除带李字的名字,并删除
		//1.用for循环删除
	//	for (int i = 0; i < list.size(); i++) {
		//	String name = list.get(i);
		//	if (name.contains("李")) {
			//	list.remove(name);
			//	i--;//一定要加i--,否则会出现异常
			//}
		//}
		//2.用迭代器
		Iterator<String> it = list.iterator();
		while(it.hasNext()) {
			String name =it.next();
			if (name.contains("李")) {
			//	list.remove(name);会发出并发修改异常错误
			//所以用下面一行代码
				it.remove();//删除迭代器当前遍历到的数据,每删除一个数据后,相当于在底层做了i--
			}
		}
		System.out.println(list); 
	}
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值