设为首页 加入收藏

TOP

Java笔记(15) Collection集合-->List集合(一)
2023-07-25 21:31:52 】 浏览:62
Tags:Java 笔记 Collection 集合 --> List

集合的理解和好处
数组一旦定义,长度即固定,不能修改。要添加新元素需要新建数组,然后循环拷贝,非常麻烦

  1. 集合可以动态保存任意多个对象,使用比较方便
  2. 提供饿了一系列方便的操作对象的方法:add、remove、set、get等
  3. 使用集合添加、删除新元素的示意代码,简洁明了

集合主要是两组(单列集合,双列集合)
Collection 接口有两个重要的子接口,List 和 Set,他们的实现子类都是单列集合,直接存放值
Map接口的实现子类 是双列集合,存放的是K-V键值对
这是Collection接口下体系的主要接口和类体系:
Collection集合体系
这是Map接口下体系的主要接口和类体系:
Map集合体系

1. Collection接口和常用方法

1.1 Collection接口实现类的特点

public interface Collection<E> extends Iterable<E>
  1. collection实现子类可以存放多个元素,每个元素可以是Object
  2. 有些Collection的实现类,可以存放重复的元素,有些不可以
  3. 有些Collection的实现类,有些事有序的(List),有些不是有序的(Set)
  4. Collection接口没有直接的实现子类,是通过他的子接口Set和List来实现的

1.2 Collection接口和常用方法

以实现子类ArrayList来演示

void add(E e);        //添加单个元素, E是泛型
E remove(int index);     //删除并返回指定元素
boolean contains(Object o);   //查找某个元素是否存在
int size();       //获取元素个数
boolean isEmpty();    //判断是否为空
void clear();      //清空
boolean addAll(Collection<? extends E> c);   //添加E集合中的所有元素
boolean containsAll(Collection <?> c);  //查找E集合中的元素是否都存在于该集合中
boolean removeAll(Collection<?> c);    //移除该集合中所有同时存在于E集合中的元素

1.3 Collection接口遍历元素方式

1.3.1 使用Iterator(迭代器)

  1. Iterator对象称为迭代器,主要用于遍历Collection集合中的元素
  2. 所有实现了Collection接口的集合类多有一个iterator()方法,用于返回一个实现了Iterator接口的对象,即可以返回一个迭代器
  3. Iterator的方法和执行原理:
//hasNext();    判断是否还有下一个元素
//next();       1.指针下移,2.将下移以后集合位置上的元素返回
//remove();     从底层集合中移移除此迭代器返回的最后一个元素,每次调用next()时,只能调用此方法一次。并且如果在迭代过程中,调用了除该方法意外的任何方式修改基础集合,都会破坏迭代器,从而终止迭代,这是为了应对并发问题,因此可以通过实现此方法的时候指定并发修改策略来避免破坏迭代器。

Iterator iterator = coll.iterator();//得到一个集合的迭代器
while(iterator.hasNext()){
    //next():
    System.out.println(iterator.next());
}
  1. Iterator仅用于遍历集合,Iterator本身并不存放对象
    提示:在调用iterator.next()方法之前,必须要调用iterator.hasNext()进行检测。否则当下一条记录无效时,调用iterator.next()会抛出NoSuchElementException异常。如果需要再次遍历,需要重置迭代器:iterator=coll.iterator();

1.3.2 使用增强for循环

增强for循环的底层仍然是迭代器,所以可以理解成简化版的迭代器
增强for循环可以用来遍历数组或者Collection集合

for(element:list){
    System.out.println(element);
}

2. List接口和常用方法

List接口和Set接口都继承了Collection接口,因此Collection接口的所有方法,实现了List接口和Set接口的类都拥有,但List接口和Set接口是平级的,因此List接口的方法,Set接口不一定拥有

2.1 List集合基本介绍

  1. List集合类中元素有序(即添加顺序和取出顺序一致)、且元素可重复。
  2. List集合中每个元素都有器对应的顺序索引,即支持索引。
  3. List容器中的元素都对应一个整数型的序号记载器在容器中的位置,可以根据序号存取容器中的元素
  4. JDK API中List接口的实现类有:AbstractList,AbstractSequentialList , ArrayList , AttributeList , CopyOnWriteArrayList , LinkedList , RoleList , RoleUnresolvedList , Stack , Vector

2.2 List接口的常用方法

List集合里添加了一些根据索引来操作集合元素的方法:

1. void add(int index, E element); //在index位置插入E类型的元素,E是泛型
2. boolean addAll(int index, Collection<? extends E> c); //将c中所有的元素插入index位置,c是实现了Collection接口的E类型的子类
3. E get(int index); //获取并返回index位置的元素
4. int indexOf(Object o);   //返回obj在集合中首次出现的位置
5. int lastIndexOf(Object o);   //返回obj在集合中最后出现的位置
6. boolean remove(Object o);    //移除指定元素
7. E remove(int index); //移除并返回指定位置的元素
8. E set(int index, E element); // 返回index位置的元素,并将此位置元素替换为element
9. List<E> subList(int fromIndex, int toIndex);//返回从fromIndex到toIndex位置的前闭后开子集合[fromIndex,toIdex)

2.3 ArrayList的注意事项

ArrayList类定义说明:

public class ArrayList<E> extends AbstractList<E>
    implements List<E>, RandomAccess, Aloneable, java.io.Serializable
  1. ArrayList 可以放入null,并且可以放入多个
  2. ArrayList是由数组来实现数据存储的
  3. ArrayList基本等同于Vector,ArrayList的执行效率更高,但是线程不安全的,因此多线程情况下,不建议使用ArrayList
    //ArrayList源码中,没有关于线程控制的代码
    public
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇 记一次HTTPClient模拟登录获取Co.. 下一篇记一次Flink遇到性能瓶颈

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目