周记005

集合有关的知识:

List系列集合:添加的元素是有序、可重复、有索引

Set系列集合: 添加的元素是无序、不重复、无索引

Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的。

Collection是一个接口,不能直接创建它的对象。

判断元素是否相等细节:底层是依赖equals方法进行判断是否存在的,如果再集合中存储的是自定义对象,也想通过contains方法来判断是否包含,那么在javabean类中一定要重写equals方法。

Collection遍历方式:

迭代器遍历:

细节:迭代器遍历完毕,指针不会复位。

遍历过程中删除元素使用。

循环中只能用一次next方法

迭代器遍历时,不能用集合的方式进行增加或删除。

增强for遍历:

所有的单列集合和数组才能用增强for进行遍历。

细节:

修改增强for中的变量,不会改变集合中原本的数据

遍历过程中若要增删元素则不能使用。

数据结构:(特点)

栈:后进后出,先进后出。

队列:先进先出,后进后出。

数组:查询速度快,删除效率低,添加效率低。

链表:结点(独立的对象)在内存当中是不连续的,每个结点包含数据值和下个结点的地址。链表查询慢,无论查询哪个数据都要从头开始找。链表增删相对快。

ArrayList集合底层原理:

1:利用空参创建的集合,在底层创建一个默认长度为0的数组。

2:添加第一个元素时,底层会创建一个新的长度为10的数组。

3:存满是,会扩容1.5倍。

4:如果一次添加多个元素,1.5倍还放不下,则新创建数组的长度以实际为准 


import java.util.Set;
import java.util.TreeSet;
import java.util.HashSet;

public class test02 {

	public static void main(String[] args) {

		Set<String> hs = new HashSet<String>();
		hs.add("唐僧");
		hs.add("孙悟空");
		hs.add("猪八戒");
		hs.add("沙和尚");
		hs.add("白龙马");
		TreeSet<String> ts = new TreeSet<String>(hs);
		System.out.println("树集合:"+ts);
		System.out.println("树集合的第一个元素:"+ts.first());
		System.out.println("树集合的最后一个元素:"+ts.last());
		System.out.println("haedSet(孙悟空)的元素:"+ts.headSet("孙悟空"));
		System.out.println("tailSet(孙悟空)的元素:"+ts.tailSet("孙悟空"));
		System.out.println("ceiling(沙)的元素:"+ts.ceiling("沙"));
	}
}

LinkedList:底层数据结构是双链表,查询慢,增删快,但是如果操作的是首尾元素,速度也挺快。

Vector :与 ArrayList 一样,也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写 Vector,避免多线程同时写而引起的不一致性,但实现同步需要很高的花费,因此,访问它比访问 ArrayList 慢。

泛型:

统一数据类型。

不具备继承性,但数据具备继承性。

不能写基本数据类型。

若不写泛型,类型默认是Object。

泛型类:

在类名后面定义泛型,创建该类对象的时候,确定泛型。

当一个类中,某个变量的数据类型不确定时,可以定义带有泛型的类;格式:

修饰符 class 类名<类型>{}

泛型方法:

在修饰符后面定义方法,调用该方法的时候,确定泛型。

方法中形参类型不确定时1,使用类名后面定义的泛型(所有方法都能用)。2,在方法申明上定义自己的泛型(只有本方法能用)。格式: 修饰符<类型>返回值类型 方法名(类型 变量名){}

泛型接口:

在接口名后面定义泛型,实现类确定泛型,实现类延续泛型。

格式:修饰符 interface 接口名<类型>{}

泛型通配符:?

? extends E: 表示可以传递E或E的所有子类类型。(上限)

? super E :表示可以传递E或E的所有父类类型。(下限)

数据结构:

(度:每个节点的子节点数量)

二叉树中,任意节点的度<=2。

二叉树的遍历方式:1,前序遍历(中,左,右)。2,中序遍历(从最左边的子节点开始,按照左子节点,当前节点,右子节点的顺序遍历)。3,后序遍历(左,右,中)。4,层序遍历。

二叉查找树:小的存左边,大的存右边,一样的不存。

平衡二叉树:规则:任意节点左右子树高度差不超过1。旋转机制:左旋,右旋。

左(右)旋:确定支点:从添加的节点开始,不断的往父节点找不平衡的节点。

红黑树:是一种自平衡的二叉查找树,每一个节点可以是红或黑;红黑树不是高度平衡的,它的平衡通过“红黑规则”实现。

红黑规则:1,每个节点或是红色或是黑色。2,根节点必须是黑色。3,若一个节点没有子节点或父节点,则该节点相应的指针值为Nil,这些Nil视为叶节点,每个叶节点是黑色的。4,若一个节点是红色的,那么它的子节点必须是黑色。5,对每一个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同的黑色节点。

Set系列集合:特点:1,无序:存取顺序不一致。2,不重复:可以去除重复。3,无索引:不能用普通for循环遍历,也不能通过索引来获取元素。

Set集合的实现类:

HashSet:无序、不重复、无索引。

LinkedHashSet:有序、不重复、无索引。

TreeSet:可排序、不重复、无索引。

Set接口中的方法基本上与Collection的API一致

put方法的细节:

在添加数据的时候,若建不存在,那么直接把建值对对象添加到map集合当中。/在添加数据时,若建存在,那么会把原有的建值对对象覆盖,会把被覆盖的值进行返回。

TreeMap集合特点:不重复、无索引、可排序。底层基于红黑树实现可排序。

集合只能存储引用类型元素,数组可存储引用类型,也可存储基本类型。

总结:这一段学习虽然告一段落,但并不是说可以放松,接下来的学习肯定会更难,在开始下一阶段的学习前要先复习一下前面学过的内容,学是学不完的,每天都有新内容,在学习新知识前,复习是至关重要的,不能学着后面的忘了前面的,顾头不顾尾。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值