List集合_介绍&常用方法和ArrayList集合

List集合

我们掌握了Collection接口的使用后,再来看看Collection接口中的子类,他们都具备那些特性呢?

接下来,我们一起学习Collection中的常用几个子类(java.util.List集合、java.util.Set集合)

List接口介绍
java.util.List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合。在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致

看完API,我们总结一下:

List接口特点:     

    1.它是一个元素存取有序的集合。例如,存元素的顺序是11、22、33。那么集合中,元素的存储就是按照11、22、33的顺序完成的)。

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

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

List接口中常用方法

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

  ~public void add(int index, E element): 将指定的元素,添加到该集合中的指定位置上。

  ~public E get(int index):返回集合中指定位置的元素。

  ~public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。

  ~public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。

复制代码
/*
    java.util.List接口 extends Collection接口
    List接口的特点:
        1.有序的集合,存储元素和取出元素的顺序是一致的(存储123 取出123)
        2.有索引,包含了一些带索引的方法
        3.允许存储重复的元素
    List接口中带索引的方法(特有)
        - public void add(int index, E element): 将指定的元素,添加到该集合中的指定位置上。
        - public E get(int index):返回集合中指定位置的元素。
        - public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。
        - public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。
    注意:
        操作索引的时候,一定要防止索引越界异常
        IndexOutOfBoundsException:索引越界异常,集合会报
        ArrayIndexOutOfBoundsException:数组索引越界异常
        StringIndexOutOfBoundsException:字符串索引越界异常
 */
public class Demo01List {
    public static void main(String[] args) {
        //创建一个List集合对象,多态
        List<String> list = new ArrayList<>();
        //使用add方法往集合中添加元素
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("a");
        //打印集合
        System.out.println(list);//[a, b, c, d, a]  不是地址重写了toString
 
        //public void add(int index, E element): 将指定的元素,添加到该集合中的指定位置上。
        //在c和d之间添加一个learn
        list.add(3,"learn");//[a, b, c, learn, d, a]
        System.out.println(list);
 
        //public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。
        //移除元素
        String removeE = list.remove(2);
        System.out.println("被移除的元素:"+removeE);//被移除的元素:c
        System.out.println(list);//[a, b, learn, d, a]
 
        //public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。
        //把最后一个a,替换为A
        String setE = list.set(4, "A");
        System.out.println("被替换的元素:"+setE);//被替换的元素:a
        System.out.println(list);//[a, b, learn, d, A]
 
        //List集合遍历有3种方式
        //使用普通的for循环
        for(int i=0; i<list.size(); i++){
            //public E get(int index):返回集合中指定位置的元素。
            String s = list.get(i);
            System.out.println(s);
        }
        System.out.println("-----------------");
        //使用迭代器
        Iterator<String> it = list.iterator();
        while(it.hasNext()){
            String s = it.next();
            System.out.println(s);
        }
        System.out.println("-----------------");
        //使用增强for
        for (String s : list) {
            System.out.println(s);
        }
 
        String r = list.get(5);//IndexOutOfBoundsException: Index 5 out-of-bounds for length 5
        System.out.println(r);
 
    }
}
复制代码

 

集合可以用来存储多个相同类型的数据,跟数组的作用差不多,但是数组一旦创建,数组长度无法改变,而集合可以改变,下面就是关于ArrayList集合的一些知识

ArrayList是一个类,要使用ArrayList时要new一个对象。

创建ArrayList类对象的基本语法如下:

ArrayList<引用数据类型> 集合名称 = new ArrayList<>();

ArrayList后面的这个<>里的东西表示泛型,所谓泛型就是装在该集合中的元素都是统一的什么类型。

注意:ArrayList集合中的泛型只能是引用数据类型,不能是基本数据类型

复制代码
public static void main(String[] args){
    //创建一个泛型为String的ArrayList集合
    //从JDK1.7之后的版本,new后面的ArrayList<>这个尖括号中不需要写东西,默认和第一个尖括号里的泛型一致
    ArrayList<String> list = new ArrayList<>();

    //注意:这里的list虽然是个对象,但是他存储的不是地址值,如果其中没有存储东西,那么他默认是“[]”,给该集合中添加元素,会添加在该方括号[]中。
    System.out.println(list); //这里的输出是[]

    //给集合中添加元素的方法是add方法,用该集合对象直接调用即可:
    list.add("疾风剑豪");
    list.add("封魔剑魂");
    list.add("无双剑姬");
    list.add("无极剑圣");
    System.out.println(list); //这里的输出是[疾风剑豪,封魔剑魂,无双剑姬,无极剑圣]
}
复制代码

 

posted @   夫君  阅读(144)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示