从零开始学Java系列教程(一):数据结构(List接口)

开发和学习中需要时刻和数据打交道,由于数组远远不能满足我们对于“管理和组织数据的需求”,所以我们需要一种更强大、更灵活的,容量随时可扩的容器来装载我们的对象。 这就是我们要学习的容器或者叫集合,集合存储的数据必须是引用类型数据

 1.集合的概述:
    集合的本质就是一个容器,不同的集合所对应的数据结构也不一样,则对应的“增删改查”效率也就不一样。


 2.学习集合的核心
    a)掌握集合的“增删改查”效率
    b)掌握不同集合是否有序。
    b)掌握不同集合是否可存储相同的元素。


  3.集合的继承体系
    Collection接口位于java.util包中,常用的派生接口是List接口和Set接口:
       (一)List接口常用的子类有:ArrayList类、LinkedList类、Vector类。
       (二)Set接口常用的子类有:HashSet类、LinkedHashSet类、TreeSet类。


    Map接口,位于java.util包中,重要的实现类有:
         TreeMap类、HashMap类、LinkedHashMap类、Hashtable类、Properties类


  4.Collection接口的抽象方法

 

注意:只要是List接口和Set接口的实现类,肯定都实现了Collection接口的抽象方法。

int size();                                            容器中元素的数量。

boolean add(Object o);                      增加元素到容器中。

boolean isEmpty();                             容器是否为空。

boolean addAll(Collection c);             将容器c中所有元素增加到本容器。

boolean remove(Object o);                从容器中移除元素。

boolean removeAll(Collection c);       移除本容器和容器c中都包含的元素。

boolean retainAll(Collection c);          取本容器和容器c中都包含的元素,移除非交集元素。

boolean contains(Object o);               容器中是否包含该元素。

boolean containsAll(Collection c);      本容器是否包含c容器所有元素。

Object[] toArray();                              把容器中元素转化成Object数组。

注意:只要是List接口和Set接口的实现类,肯定都实现了Collection接口的抽象方法

// 1.创建集合
Collection coll = new ArrayList();
// 2.往集合中添加对象元素
coll.add("111");
coll.add("222");
coll.add("333");
System.out.println(coll); // 输出:"[111, 222, 333]"
// 3.从集合中删除元素
coll.remove("111");
System.out.println(coll); // 输出:"[222, 333]"
// 4.判断集合中是否包含指定元素
System.out.println(coll.contains("222")); // 输出:true
// 5.获取集合元素个数
System.out.println(coll.size());  // 输出:2

List接口


List接口是Collection接口的子接口,则意味着Collection接口中的方法list接口中的实现类都有。

list接口常见的实现类:ArrayList类、LinkedList类和Vector类

List接口的特点:满足“存储的元素有序”,并且可以存储“相同的元素”。

List是Collection的子接口,除了Collection接口中的方法,List还多了一些跟序号(索引)有关的方法:

void add(int index, Object obj);                 在指定位置插入元素。

boolean addAll(int index, Collection c);    在指定位置增加一组元素

Object set(int index, Object element);      修改指定位置的元素。

Object get(int index);                                返回指定位置的元素。

boolean remove(int index);                       删除指定位置的元素,后面元素通通前移一位。

int indexOf(Object o);                               返回第一个匹配元素的索引。如果没有该元素,返回-1。

int lastIndexOf(Object o);                         返回最后一个匹配元素的索引。如果没有该元素,返回-1。

List subList(int fromIndex, int toIndex);    取出集合中的子集合,截取范围:[fromIndex, toIndex)。

ListIterator listIterator();                           为ListIterator接口实例化。

获取、修改、删除”等操作,序号的取值范围:[0, list.size() - 1];“插入操作”序号的取值范围:[0, list.size()];如果操作的序号不合法,肯定会抛出“索引越界异常”。


ArrayList


ArrayList是List接口的实现类,则意味着Collection接口和List接口中的方法ArrayList都能使用。


ArrayList的底层就是数组,其本质就是对数组进行的封装,也就意味着数组的特点ArrayList都具备。


ArrayList的特点:查询效率高,增删效率低,线程不安全。


ArrayList的使用场合: 经常根据索引来做查询操作,但是很少根据索引做插入和删除操作,建议使用ArrayList集合。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值