List接口

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

List集合特有的方法

  • void add(int index,E element)
  • boolean addAll(int index,Collection< ? extends E> c)

  • E remove(int index)

  • E set(int index,E element)

  • E get(int index)
  • int indexOf(Object o)
  • int lastIndexOf(Object o)
  • List subList(int fromIndex,int toIndex)
  • ListIterator listIterator()
  • ListIterator listIterator(int index)

1.void add(int index,Object element):在指定位置插入元素

package com.first;

import java.util.ArrayList;
import java.util.List;

public class HelloWorld {

    public static void main(String[] args) {

        List list=new ArrayList();
        list.add("a");
        list.add("c");
        list.add("d");
        list.add(1, "e");
        System.out.println(list);

    }

}

运行结果为

[a, e, c, d]

2.Object remove(index):删除索引处的元素

package com.first;

import java.util.ArrayList;
import java.util.List;

public class HelloWorld {

    public static void main(String[] args) {

        List list=new ArrayList();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");

        Object obj=list.remove(1);
        System.out.println(obj);
        System.out.println(list);

    }

}

运行结果为

b
[a, c, d]

另外删除的时候不会自动装箱,只会把111当做索引。

package com.first;

import java.util.ArrayList;
import java.util.List;

public class HelloWorld {

    public static void main(String[] args) {

        List list=new ArrayList();
        list.add(111);
        list.add(222);
        list.add(333);

        Object obj=list.remove(111);
        System.out.println(obj);
        System.out.println(list);

    }

}

这时候会报索引越界异常。
如果想删除111这个元素,可以手动装箱Object obj=list.remove(new Integer(111));

3.Object get(int index):返回集合索引index处的元素

package com.first;

import java.util.ArrayList;
import java.util.List;

public class HelloWorld {

    public static void main(String[] args) {

        List list=new ArrayList();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");

        Object obj=list.get(1);
        System.out.println(obj);

    }

}

运行结果为

b

通过索引遍历List集合

for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}

4.Object set(int index,Object element):将索引index处元素替换成element对象,并将替换后的元素返回。

package com.first;

import java.util.ArrayList;
import java.util.List;

public class HelloWorld {

    public static void main(String[] args) {

        List list = new ArrayList();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");

        Object obj = list.set(1, "a");
        System.out.println(obj);
        System.out.println(list);

    }

}

运行结果为

b
[a, a, c, d]

5.ListIterator listIterator():返回在该集合的元素上进行迭代的迭代器(ListIterator),用于遍历该集合所有元素。

ListIterator迭代器是Iterator的子类,在父类中增加了一些特有的方法。ListIterator属于list特有的迭代,不常用。

6.用for循环遍历

package com.first;

import java.util.ArrayList;
import java.util.List;

public class HelloWorld {
    public static void main(String[] args) {

        List list = new ArrayList();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("b");
        list.add("d");

        for (int i = 0; i < list.size(); i++) {
            if ("b".equals(list.get(i))) {
                list.remove(i);
            }
        }

        System.out.println(list);
    }
}

运行结果为

[a, c, d]

当修改集合为

List list = new ArrayList();
list.add("a");
list.add("b");
list.add("b");
list.add("c");
list.add("d");

运行结果为

[a, b, c, d]

这里有个b没有被删除

当b之间没有挨着的时候

这里写图片描述
b之间挨着的时候
这里写图片描述

为了解决这个问题,代码改为

for (int i = 0; i < list.size(); i++) {
    if ("b".equals(list.get(i))) {
        list.remove(i--);
    }
}

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
STL list是C++标准模板库的一个双向链表容器,它提供了一系列接口用于操作和管理链表的元素。下面是一些常见的STL list接口: 1. 构造函数: - list(size_type n, const value_type& val = value_type()):构造包含n个值为val的元素的list。 - list():构造一个空的list。 - list(const list& x):拷贝构造函数,用于复制另一个list的内容构造新的list。 - list(InputIterator first, InputIterator last):用[first, last)区间的元素构造list。 2. 容器大小: - size():返回list元素的个数。 - empty():检查list是否为空。 3. 元素访问: - front():返回list第一个元素的引用。 - back():返回list最后一个元素的引用。 4. 插入和删除元素: - push_front(const value_type& val):在list的开头插入一个元素。 - pop_front():移除list的第一个元素。 - push_back(const value_type& val):在list的末尾插入一个元素。 - pop_back():移除list的最后一个元素。 - insert(iterator position, const value_type& val):在指定位置之前插入一个元素。 - erase(iterator position):移除指定位置的元素。 - erase(iterator first, iterator last):移除[first, last)区间的元素。 5. 元素操作: - clear():移除list的所有元素。 - remove(const value_type& val):移除所有等于val的元素。 - unique():移除所有相邻重复的元素。 - sort():对list的元素进行排序。 - reverse():反转list元素的顺序。 你可以参考C++官方文档(https://cplusplus.com/reference/list/list/)了解更多关于STL list接口和用法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值