Java学习day19--集合

Collection :

Collection接口是集合层次结构中的根接口。 集合表示一组对象,称为其元素 。

List子接口下的实现类有序可重复

Set子接口下的实现类无序不可重

Collection接口中的方法:

添加 add
删除 remove
记数 size
包含 contains
清空 clear
是否空 isEmpty
关于迭代器(Iterator):
  • 所有实现了Collection接口的容器类都有一个 iterator 方法用以返回一个实现了Iterator接口的对象。

  • Iterator对象称作迭代器,用以方便的实现对容器内元素的遍历操作。

Iterator接口定义了如下方法:

  • boolean hasNext(); //判断是否有元素没有被遍历

  • Object next(); //返回游标当前位置的元素并将游标移动到下一个位置

  • void remove(); //删除游标左面的元素,在执行完next之后该 ,操作只能执行一次

一、List

extends Collection

有序的可重复

新增方法 :

新增了一些根据索引进行操作的方法

获取 get
查询对象出现的索引 indexOf(Object)
  • 底层用双向链表实现的List。特点:查询效率低,增删效率高,线程不安全。

  • 底层用数组实现的List。特点:查询效率高,增删效率低,线程不安全。

遍历方式 :

普通for

//普通for循环 ,利用List元素有下标的特点,依次获取每一个元素

for (int i=0; i<list.size(); i++){
    System.out.println(list.get(i));
}

增强for

//增强for 依次获取集合中每一个元素存入一个临时变量中
for (String temp : list) {
    System.out.println(temp);
}

Iterator迭代器

Iterator<String> it = list.iterator();
while(it.hasNext()){
    System.out.println(it.next());
}

ListIterator列表迭代器

1、ArrayList:

有序,可重复,可以根据索引进行操作

List接口的可调整大小的阵列实现。 实现所有可选列表操作,并允许所有元素,包括null 。

这个类大致相当于Vector ,除了它是不同步的。

底层结构 : 可变数组 Object[] elementData;

特点 : 根据索引查询效率高,做增删效率低,因为大量的涉及到新数组创建,数据的拷贝

引用场景 : 适合应用在大量做查询,少量做增删的场景

初始容量 : 10 DEFAULT_CAPACITY = 10

扩容机制 : 通过Arrays.copyOf方法实现创建新数组拷贝数据,每次扩容原容量的1.5倍 int newCapacity = oldCapacity + (oldCapacity >> 1);

新增方法 : 无

遍历方式 :

1.for

2.foreach

3.Iterator

4.ListIterator

注意 :

如果某个类型底层构为数组或数组相关类型,需要关注初始容量与扩容机制

2、Vector:

ArrayList与Vector区别 :

共同点 :

  • 都是List接口的实现类,有序可重复的

  • 底层结构都是数组,查询效率高,增删效率低

不同点 :

线程安全|同步问题 :

ArrayList线程不安全|不同步

Vector 线程安全|同步

如果不需要线程安全实现,建议使用ArrayList代替Vector 。

初始容量与扩容机制 :

ArrayList 初始容量默认10|可以在构造器中指定,在add方法中创建

Vector 初始容量默认10|可以在构造器中指定,在构造器中直接创建

ArrayList 每次扩容原容量的1.5倍

int newCapacity = oldCapacity + (oldCapacity>>1);

Vector 默认每次扩容原容量的2倍|可以根据需求指定每次扩容多少-->容量增量

int newCapacity = oldCapacity + ((capacityIncrement > 0) ?

capacityIncrement : oldCapacity);

3、LinkedList

有序的,可重复的

实现所有可选列表操作,并允许所有元素(包括null )。

底层结构 : 双向链表

特点 : 查询效率低,增删效率高

应用场景: 适合应用在大量做增删,少量做查询的情况

新增方法 : 新增了一些操作链表头尾的方法

遍历方式 : 1)for 2)foreach 3)iterator 4)listIterator

二、Set

extends Collection

无序的,不可重复(去重的)

无序 : 存放的顺序与内部真实存储的顺序不保证一致

新增方法 : static <E> Set<E> of(E... elements) 返回包含任意数量元素的不可修改集。

遍历方式 :

普通for不可用,set集合无序,对于索引不可用

//增强for
for(String s : set){
    System.out.println(s);
}

//迭代器
Iterator<String> it = set.iterator();
while(it.hasNext()){
    System.out.println(it.next());
}
TreeSet

底层是由TreeMap维护的

无序的,不可重的

底层结构 : 红黑树(平衡二叉树)

特点 : 查询效率高,去重,默认升序排序

引用场景 : 适合应用在存储多个单个值的数据的集合,去重的,自动升序排序的场景

新增方法 : 新增了一些与比较大小相关的方法

遍历方式 : 1)foreach 2)iterator

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值