Day36:List详解

科技资讯 投稿 7700 0 评论

Day36:List详解

List

1.1 概述

ListCollection的子接口,代表的一组任意对象,有序,有下标、元素可以重复。

1.2 方法

方法名 说明
void add(int index,Object o 在指定位置添加元素
boolean addAll(int index,Collection o 将一个集合的所有元素添加到指定位置
Object get(int index 获取指定下标出的元素(根据自己需要转换返回的对象类型)
List subList(int fromIndex,int toIndex 获取指定区间下标之间的子集合元素(左闭右开)
...... ......

1.3 方法的使用

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class ListTest {
    public static void main(String[] args{
        //先创建一个List的实例   List为接口,无法直接实例,还是用多态的形式利用实现类来时实例化
        List l=new ArrayList<>(;//此时集合内容为空

        //添加元素add
        System.out.println("================add================";
        l.add("苹果";
        l.add("香蕉";
        l.add("哈密瓜";
        System.out.println(l;

        //删除元素remove
        System.out.println("================remove================";
        //l.remove("苹果";  List有序集合即可以使用下标,我们就不采用这种删除方式
        l.remove(0;
        System.out.println(l;

        //遍历操作

        //方法1:增强for循环
        System.out.println("================增强for================";
        for(Object o:l{
            System.out.println(o;
            //因为我们的集合元素为字符串,所以打印出来没有问题,如果是一些带属性的对象,我们需要在类中重写toString方法
        }
        //方法2:使用普通for循环   因为List是有序的,可以使用下标
        System.out.println("================for================";
        for (int i = 0; i < l.size(; i++ {//注意这里是size,不是数组的长度表示length
            System.out.println(l.get(i;//注意要用get方法来获取对应下标的元素
        }
        //方法3:使用迭代器来遍历:Iterator
        System.out.println("================Iterator================";
        Iterator i=l.iterator(;
        while(i.hasNext({
            System.out.println(i.next(;
        }
        //方法4:使用列表迭代器ListIterator
        System.out.println("================ListIterator================";
        //ListIterator同Iterator相比,功能更加丰富:可以向前、向后遍历元素;可以增加、删除、修改元素
        //先创建列表迭代器
        ListIterator li=l.listIterator(;
        //从前往后遍历元素
        System.out.println("================从前往后遍历元素================";
        while(li.hasNext({
            System.out.println(li.next(;
        }
        // 从后往前遍历元素
        System.out.println("================从后往前遍历元素================";
        while(li.hasPrevious({//使用hasPrevious(方法时,确保迭代器指向已经最后一个元素
            System.out.println(li.previousIndex(+" "+li.previous(;
        }

        //判断
        //判断是否有某个元素contains
        System.out.println("================contains================";
        System.out.println(l.contains("榴莲";
        //判断集合是否为空isEmpty
        System.out.println("================isEmpty================";
        System.out.println(l.isEmpty(;

        //获取元素位置 indexOf
        System.out.println("================indexOf================";
        System.out.println(l.indexOf("香蕉";


    }
}
================add================
[苹果, 香蕉, 哈密瓜]
================remove================
[香蕉, 哈密瓜]
================增强for================
香蕉
哈密瓜
================for================
香蕉
哈密瓜
================Iterator================
香蕉
哈密瓜
================ListIterator================
================从前往后遍历元素================
香蕉
哈密瓜
================从后往前遍历元素================
1 哈密瓜
0 香蕉
================contains================
false
================isEmpty================
false
================indexOf================
0

注意:

    当我们往集合里面添加基本类型时,基本类型会自动装箱
  • 调用删除方法时,根据传入的参数类型不同,删除处理的方式是不一样的
List l=new ArrayList<>(;
l.add(20;
l.add(30;
l.add(40;
l.add(50;
l.add(60;//当我们添加基本类型作为元素时,基本类型会自动装箱
System.out.println(l;

//remove的一些注意事项
//l.remove(20;  此时20并不是我们添加的那个元素20;remove参数传递的是元素下标值
//l.remove(0; 传递正确的下标值

l.remove(new Integer(20;
//remove方法对于传入的参数若为对象,则按对象的值进行删除自身集合中对应的值;对于传入的参数若为int类型,则按参数下标进行索引集合中的元素进行删除

[20, 30, 40, 50, 60]
[30, 40, 50, 60]

编程笔记 » Day36:List详解

赞同 (33) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽