当前位置 : 主页 > 编程语言 > 其它开发 >

Java基础——List集合

来源:互联网 收集:自由互联 发布时间:2022-07-01
List集合 Collection 层次结构中的根接口。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接实现:它提供

 

List集合

Collection 层次结构中的根接口。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接实现:它提供更具体的子接口(如 Set 和 List、Queue)实现。 我们掌握了Collection接口的使用后,再来看看Collection接口中的子接口,他们都具备那些特性呢?

1.1 List接口介绍

java.util.List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合。

List接口特点:

  • List集合所有的元素是以一种线性方式进行存储的,例如,存元素的顺序是11、22、33。那么集合中,元素的存储就是按照11、22、33的顺序完成的)

  • 它是一个元素存取有序的集合。即元素的存入顺序和取出顺序有保证。

  • 它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)。

  • 集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素。

List集合类中元素有序、且可重复。这就像银行门口客服,给每一个来办理业务的客户分配序号:第一个来的是“张三”,客服给他分配的是0;第二个来的是“李四”,客服给他分配的1;以此类推,最后一个序号应该是“总人数-1”。

注意:

List集合关心元素是否有序,而不关心是否重复,请大家记住这个原则。例如“张三”可以领取两个号。

1.2 List接口中常用方法

List作为Collection集合的子接口,不但继承了Collection接口中的全部方法,而且还增加了一些根据元素索引来操作集合的特有方法,如下:

List除了从Collection集合继承的方法外,List 集合里添加了一些根据索引来操作集合元素的方法。

1、添加元素

  • void add(int index, E ele)

  • boolean addAll(int index, Collection<? extends E> eles)

2、获取元素

  • E get(int index)

  • List subList(int fromIndex, int toIndex)

3、获取元素索引

  • int indexOf(Object obj)

  • int lastIndexOf(Object obj)

4、删除和替换元素

  • E remove(int index)

  • E set(int index, E ele)

List集合特有的方法都是跟索引相关:

 package com.atguigu.list;
 
 import java.util.ArrayList;
 import java.util.List;
 
 public class TestListMethod {
     public static void main(String[] args) {
         // 创建List集合对象
         List<String> list = new ArrayList<String>();
 
         // 往 尾部添加 指定元素
         list.add("图图");
         list.add("小美");
         list.add("不高兴");
 
         System.out.println(list);
         // add(int index,String s) 往指定位置添加
         list.add(1,"没头脑");
 
         System.out.println(list);
         // String remove(int index) 删除指定位置元素 返回被删除元素
         // 删除索引位置为2的元素
         System.out.println("删除索引位置为2的元素");
         System.out.println(list.remove(2));
 
         System.out.println(list);
 
         // String set(int index,String s)
         // 在指定位置 进行 元素替代(改)
         // 修改指定位置元素
         list.set(0, "三毛");
         System.out.println(list);
 
         // String get(int index) 获取指定位置元素
         // 跟size() 方法一起用 来 遍历的
         for(int i = 0;i<list.size();i++){
             System.out.println(list.get(i));
        }
         //还可以使用增强for
         for (String string : list) {
             System.out.println(string);
        }
    }
 }

在JavaSE中List名称的类型有两个,一个是java.util.List集合接口,一个是java.awt.List图形界面的组件,别导错包了。

1.3 List接口的实现类们

List接口的实现类有很多,常见的有:

ArrayList:动态数组

Vector:动态数组

LinkedList:双向链表

当然,还有很多List接口的实现类这里没有列出来,基础阶段先了解这几个。

1.4 动态数组 1、动态数组的特点

逻辑结构特点:线性结构

物理结构特点:

  • 申请内存:一次申请一大段连续的空间,一旦申请到了,内存就固定了。

  • 存储特点:所有数据存储在这个连续的空间中,数组中的每一个元素都是一个具体的数据(或对象),所有数据都紧密排布,不能有间隔

网友评论