List()接口

简介: List()接口

List接口: 有序、有下标、元素可以重复

方法:

1、单个元素的添加、删除

void add(int index,Object obj) //指定index位置插入对象o
boolean add(Object obj) //列表的尾部添加指定的对象
object remove(int index) //移除列表中指定元素的对象
boolean remove(Object obj) //移除列表中第一次出现的指定对象

2、组元素的添加、删除

boolean addAll(Collection col) //将列表col所有元素添加到列表的结尾
boolean addAll(int index,Collection col) //将集合col添加到列表index的位置
boolean removeAll(Collection col) //移除列表col包含的所有元素
boolean retainAll(Collection col) //保留col中的所有元素
boolean clear()   //清空列表

3、元素查询

boolean contains(Object obj) //判断列表是否包含obj对象
Object get(int index)   //获取指定索引处的元素
int index(Object obj) //返回指定对象在列表中第一次出现的索引
int size()    //获取列表中元素的个数

4、组查询

boolean containsAll(Collection col)   //判断col中所有的元素是否包含在列表中
Iterator iterator() //获取列表的一个迭代器,遍历列表
ListIterator listIterator()  //获取列表的一个列表迭代器
ListIterator listIterator(int index) //获取从指定位置开始的列表迭代器

egg:以[ 华为,苹果,三星,大哥大]列表为例

package Collection接口;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
/**
 * List的特点:1、有序 有下表
 *            2、元素可以重复
 * @author AiY
 */
public class ListDemo {
    public static void main(String[] args) {
        //创建一个集合
        List list=new ArrayList();
        list.add("华为");
        list.add("苹果");
        list.add("三星");
        list.add("大哥大");
        System.out.println("元素的个数:"+list.size());
        System.out.println(list.toString());
        //删除元素
        //list.remove("大哥大");
        //list.remove(1);
        //System.out.println(list);
        //遍历
        System.out.println("---使用for遍历");
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }
        System.out.println("---使用增强for");
        for(Object object:list){
            System.out.println(object);
        }
        System.out.println("---使用迭代器");
        Iterator iterator=list.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
        System.out.println("---使用列表迭代器遍历");
        //列表迭代器可以增加元素、删除元素、获取元素或者元素脚标
        //也可以向前向后遍历
        ListIterator listIterator=list.listIterator();
        System.out.println("---从前往后遍历");
        while(listIterator.hasNext()){
            System.out.println(listIterator.nextIndex()+":"+listIterator.next());
        }
        System.out.println("---从后往前遍历");
        while(listIterator.hasPrevious()){
            System.out.println(listIterator.previousIndex()+":"+listIterator.previous());
        }
        System.out.println(list.contains("大哥大"));
        //索引下标为2的元素
        System.out.println(list.get(2));
        //清空
        list.clear();
        System.out.println(list.size());
    }
}

元素的个数:4
[华为, 苹果, 三星, 大哥大]
---使用for遍历
华为
苹果
三星
大哥大
---使用增强for
华为
苹果
三星
大哥大
---使用迭代器
华为
苹果
三星
大哥大
---使用列表迭代器遍历
---从前往后遍历
0:华为
1:苹果
2:三星
3:大哥大
---从后往前遍历
3:大哥大
2:三星
1:苹果
0:华为
true
三星
0

添加(1):sbulist 的用法是截取列表某一段,其中截取的包含左边,不包含右边

package Collection接口;

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

public class ExampleDemo {
    public static void main(String[] args) {
        List list=new ArrayList();
        list.add("关羽");
        list.add("张飞");
        list.add("赵云");
        list.add("黄盖");
        list.add("马超");
        System.out.println(list);
        List sbulist=list.subList(1,3);
        System.out.println(sbulist);
    }
}
[关羽, 张飞, 赵云, 黄盖, 马超]
[张飞, 赵云]

添加(2): 如果针对的列表是数字,且要删除某一个数字的话,使用list.remove(i),此时移除的是下标为i的数字,而非数字本身,这个时候就需要用另一方法1、使用Object类;2、使用Integer

package Collection接口;

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

public class ListDemo1 {
    public static void main(String[] args) {
        //创建
        List list=new ArrayList();
        for(int i=10;i<=60;i=i+10){
            list.add(i);
        }
        System.out.println("元素个数"+list.size()+":"+list);
        //list.remove(10);  //删除的只是下标10的元素,而不是10
        //删除指定下标的两种方法1、使用object2、使用Integer
        list.remove((Object)10);
        list.remove(new Integer(20));
        System.out.println("元素个数"+list.size()+":"+list);
    }
}
元素个数6:[10, 20, 30, 40, 50, 60]
元素个数4:[30, 40, 50, 60]


相关文章
|
2天前
|
存储 安全 算法
Java一分钟之-Java集合框架入门:List接口与ArrayList
【5月更文挑战第10天】本文介绍了Java集合框架中的`List`接口和`ArrayList`实现类。`List`是有序集合,支持元素重复并能按索引访问。核心方法包括添加、删除、获取和设置元素。`ArrayList`基于动态数组,提供高效随机访问和自动扩容,但非线程安全。文章讨论了三个常见问题:索引越界、遍历时修改集合和并发修改,并给出避免策略。通过示例代码展示了基本操作和安全遍历删除。理解并正确使用`List`和`ArrayList`能提升程序效率和稳定性。
9 0
|
2天前
|
存储 编译器 C++
【C++/STL】list(常见接口、模拟实现、反向迭代器、)
【C++/STL】list(常见接口、模拟实现、反向迭代器、)
5 0
|
7月前
|
存储 算法 Java
java集合框架------Collection接口,List接口与实现类,Set接口与实现类
java集合框架------Collection接口,List接口与实现类,Set接口与实现类
|
2天前
|
存储 安全 Java
深入解析Java List接口及其实现类
深入解析Java List接口及其实现类
|
2天前
|
索引
看一下List接口的常用方法
看一下List接口的常用方法
37 1
|
2天前
|
编译器 C++
|
7月前
|
XML 存储 JSON
java框架集合List子接口之ArrayList源码剖析
ArrayList使用尾删法时 , 时间复杂度为O(1) , 并且会把最后一个元素置位null , 其它删除时间复杂度为O(N) , 因为会涉及到元素的移动以及元素的遍历 ArrsyList是线程不安全的
26 0
|
7月前
|
存储 Java 索引
java集合框架List子接口之LinkedList源码剖析
LinkendList从物理结构来说是一种线性结构 , 而从逻辑结构来说是一种链式存储结构 , 虽然是线性结构 , 但是并不会按照线性的顺序存储 , 而是分散存储在内存中 , 通过指针来建立节点与节点之间的联系, 同时实现了Deque这也说明它是一个双向链表 , 在源码中 , 没有看到它对线程安全问题的处理 , 所以它同时还是一个线程不安全的链表 , 也没有看到不允许插入null元素 , 重复元素的处理 , 所以它又是一个允许重复元素以及null元素的链表
36 0
|
8月前
|
存储 容器
【数据结构】 List与顺序表及接口的实现
【数据结构】 List与顺序表及接口的实现
|
9月前
|
存储 Java
Java中 List集合接口及其主要的实现类ArrayList,Vector,LinkedList的详解
Java中 List集合接口及其主要的实现类ArrayList,Vector,LinkedList的详解
40 0