java笔记-List集合

List集合:

集合在java中本身就是一个容器,一个对象,存储的是引用,不能存基本数据类型。
java中每一个不同的集合,底层对应不同的数据结构,往不同的集合中存储元素等于将数据放在不同的数据结构中。
注意:放在集合中的元素都要重写equals方法。

所有的集合类和集合接口都在java.util包下
java中集合分为两种:
1.单个方式存储元素:
这一类的超级父接口是java.util.collection
2.以键值对的方式存储元素:
这一类的超级父接口是java.util.map

collection继承Iterable,Iterable中有方法Iterator,证明collection及其子类都是可以迭代的。

List存储元素的特点:

有序可重复,存储的元素有下标。这里的有序指的是:存进去是这个顺序,取出来还是这个顺序。

Set集合存储元素的特点:

无序不可重复,Set集合的元素没有下标,元素不可重复。这个无序是指存进去是这个顺序,取出来不一定是这个顺序。

list的子类:

ArrayList:

底层是Object类型的数组,初始化容量为0,当添加元素时,容量变为10。(非线程安全)
当ArrayList需要扩容的时候,扩容后的数组长度为原来的1.5倍,尽量减少扩容。
这些集合中,ArrayList用的最多。因为一般往数组末尾增加元素,效率不受影响,检索效率高。

LinkList:

底层采用双向链表数据结构。随机增删效率较高,检索效率较低。内存地址不连续。

Vector:

底层采用数组的数据结构。效率较低,已经有别的线程安全的方案代替。(线程安全)
初始化容量为10,每次扩容后容量是原来的两倍,所有方法都是线程同步的,带有sychronized关键字。
collections是集合工具类,可以调用synchronizedList方法将List集合转成线程安全的。

Set的子类:

HashSet:

底层创建HashMap集合,向HashSet中存储元素本质上是存储到HashMap中。HashMap集合是一个哈希表数据结构。

SortedSet:

无序不可重复,放在SortedSet中的元素可以自动排序,称为可排序集合。

SortedSet的子类:

TreeSet集合底层实际上是TreeMap,new TreeSet集合的时候,底层实际上是new了一个TreeMap集合。往TreeSet中放数据的时候,实际上是放到TreeMap中,
注意:TreeMap集合底层采用二叉树的数据结构。

collection中的方法:

(collection只能存引用的地址。)
boolean add(E e) //向集合中增加对象,若是整型,则会先进行自动装箱。
int size() //返回集合中元素的个数。
void clear() //清空集合中的元素。
boolean contains(Object o) //判断集合中是否包含这个对象。
boolean remove(Object o) //删除集合中的某个元素。
boolean isEmpty() //判断集合是否为空。
Object[] toArray() //将集合元素转换为数组
(重点)Iterator iterator() //返回集合中的元素的迭代器。迭代器可以遍历集合。
当集合元素改变的时候,需要重新获得迭代器,否则会报错。
collection和其子类都可以使用该方法。
例如:

 Collection c = new HashSet();
 Iterator it = c.iterator();//得到该集合的迭代器

迭代器中有方法hasNext();当这个方法返回true,则表明还有元素可以迭代,当这个方法返回false表示没有更多的元素可以迭代的。
迭代器中的方法next();返回值必须是Object!!返回迭代的下一个元素,这个方法使得迭代器前进一位,并且将指向的元素返回。返回元素统一是Object对象
迭代器中的方法remove();可以将迭代器和集合中的元素一并删掉,从而没有出错。
boolean contains(Object o) :
contains底层源码调用了equals方法,对于字符串来说,比较的是内容,而不是内存地址。
而对于一些没有重写equals方法的对象,在调用contains的时候,则是比较内存地址。
可以看出,contains的结果,是取决于equals方法的。

boolean remove(Object o):
底层调用该对象的equals方法,如果equals方法已经重写,则内容与o相同的元素将会被移出集合。
如果没有重写,则移除与o地址相同的元素。

list中的方法:

void add(int index, E element) //在列表指定位置插入元素,后面的元素往后移。该方法使用的不多,因为效率比较低。

E get(int index) //返回该下标的元素

int indexOf(Object o) //获得指定对象第一次出现的索引。

int lastIndexOf(Object o) //获得指定对象最后一次出现的索引。

E remove(int index) //删除指定下标处的对象。

E set(int index, E element) //修改指定位置的对象。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值