2021.7.15

集合,list 链表,比较器

1.集合

1.1概述

  Java集合是使程序能够存储和操纵元素不固定的一组数据的。所有java集合类都位于java.uitl包中。

  1. 和数组的区别

 数组长度固定, 集合长度不固定

 数组存放任意类型,集合不能存放基本数据类型,只能存放对象的引用

 如果;集合存放基本类型,一定要将其“装箱”成对应的“基本类型包装类”

1.2 继承关系

Java集合类有清晰的继承关系;

最常见的几个接口和实现类;

Collection--->List---->ArrayList类

Collection--->List---->LinkedList类

Collection--->Set---->HashSet类

Collection--->Set---->SortedSet接口--->TreeSet类

Map---->HashMap类

Map----->SortedMap---->TreeMap类

2.Collection

2.1方法

boolean add(object o) 该方法用于向集合里添加一个元素,添加成功返回true

void clear ()清除集合里所有的元素,将集合长度变为0

boolean contains(object o)返回集合里是否包含指定元素

Int hashCode()返回collection的哈希码值

Boolean isEmpety() 返回值是否为空,当集合长度为0时,返回ture

Iterator iterator()返回一个Iterator对象,用来遍历集合里的元素

boolean remove(Object o)删除集合中的指定元素,当集合包含一个或多个元素0时,这些元素将被删除,该地方放回true

boolean remove All(Collection c)从集合中删除集合c里面的所有元素,如果删除一个或者多个以上的元素,返回true

boolean retain All(Collection c)从集合删除不在集合c里包含的元素,如果删除一个或一个以上的元素,返回ture

int size() 返回集合中的元素个数

Object[] toArray() 该方法把集合换成一个数组,所有集合元素变成对应的元素

2.3 注意

boolena caontains(Oject o):判断是否包含某个元素

boolean remove(Object o):删除指定元素

这两个方法底层都会调用equals方法进行比较

比如c.contain(“abc”):会用abc 调用equal方法和集合中所有元素进行比较

所以如果我们要存储的是自定义的类型,比如User那么想要使用contain和remove就需要覆写equal方法

Iterator

3.1 概述

1.Collection 接口的iterator()和toArray()方法都用于获得集合中的所有元素,前者返回一个Iterator对象,后者返回一个包含集合中所有的数组

2.Iterator 的好处在于可以使用相同的方法去遍历集合元素,而不用考虑集合类的内部实施。

使用Iterator来遍历集合中元素,如果不得使用Llis转而使用Set来组织数据,则遍历元素的代码不用做任何修改

使用for来遍历,那所有遍历此集合的算法都做相应调整,因为List有序,Set无序,结构不同,他们的访问算法也不一样

for循环需要下标

3.2方法

3.3使用

迭代器遍历完后,想再次遍历只能重新生成

List

4.1概述

List:有序可重复

  存入顺序和取出的顺序是一致的

ArrayList:底层是数组,查询和更改效率极高,添加和删除效率较低

LinkedList:底层是双向链表,查询效率低,添加删除效率高

Vector:已经过时,底层也是数组,ArrayList是Vector的升级版

   Voctor:默认值是10,夸大容量是2倍,线程安全,效率较低

   ArrayList默认容量是10,扩大容量是1.5倍,非线路安全,效率高。

Arraylist

LinkedList

4.1概述

LinkedList:底层是双向链表

  链表的节点有三部分:1 添加元素 2下一个节点的引用 3上一个节点的引用

  链表数据结构,在内存中储存也不是连续的,所以没有固定的下标,因此查询效率低

   因为存储空间不是连续的,只能找到下一个节点,因此添加和删除就变的容易了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值