List容器详解(JAVA)

 Collection:容器也叫集合 

List接口继承了Collection.

List的两个实现类ArrayList底层是用数组实现,增减效率低,查询效率高。

LinkedList底层是用链表实现,增减效率高,查询效率低。

这里用的是ArrayList来演示List的常用方法,不同实现类的常用方法都是一样的。

​
package 集合List;

import java.util.*;

/**
 * collection容器也叫集合
 * List有序 可重复
 * Set 无序 不可重复
 *
 *
 *学习接口Collection
 *list接口的两个实现类,各有优缺点;
 *Arraylist用数组实现 增减效率较低 查询效率高
 *Linklist用链表实现 增减效率高 查询效率低
 *
 *
 */
public class study_01 {
    public static void main(String[] args) {
        //test01();
        //test02();
        test03();

    }

    //list常见方法,多位于collection接口中
    private static void test01() {
        //list常见方法,多位于collection接口中
        //List接口继承collection接口
        Collection  list=new ArrayList<>();//Collection接口
        list.add(1);
        list.add("a");
        list.add("String");
        list.add("b");
        System.out.println(list.isEmpty());//判断是否为空
        System.out.println(list.contains("String"));//是否包含
        System.out.println(list);
        Iterator iterator=list.iterator();//定义的迭代器
        while (iterator.hasNext()){//hashNext()方法是看迭代器是否有下一个元素
            Object object=iterator.next();//next获得下一个元素
            System.out.println(object);
            if ("String".equals(object)){
                list.remove(object);//这里的object还在只是容器里没有了remove和delete不同;
                //这里因为迭代器没有更新所以String被删除后迭代器的hashNext为false
            }
        }
        System.out.println(list);
        Object[] objs=list.toArray();
        System.out.println("转化成Object数组"+Arrays.toString(objs));
        list.clear();//清空list
        System.out.println(list);
    }
    //演示与list索引有关的方法
    private static void test02(){
        //List存储的是有序可重复,因为有序所以每个元素都有对应的索引
        //这里演示与list索引有关的方法
        List list=new ArrayList<>();
        list.add("A");
        list.add("B");
        list.add("C");
        list.add("D");
        System.out.println(list);
        list.add(2,"赵");//在索引位置添加索引,原先的元素后移;
        System.out.println(list);
        list.remove(2);//在索引位置移除元素,后面的元素前移到删除元素的索引位置
        System.out.println(list);
        list.set(2,"宇");//修改索引位置的数据
        System.out.println(list);
        System.out.println(list.get(2));//返回指定索引位置的元素
        //list重要特点有序可重复
        list.add("B");
        System.out.println(list.indexOf("B"));//从头到尾找到第一个返回索引位置
        System.out.println(list.lastIndexOf("B"));//从尾到头找到第一个返回索引位置
    }
    //测试两个容器之间的元素处理
    private static void test03(){
        //测试两个容器之间的元素处理
        List list=new ArrayList<>();
        list.add("赵宇晖");
        list.add("赵雪晨");
        list.add("王豪杰");
        List list1=new ArrayList<>();
        list1.add("赵宇晖");
        list1.add("张三");
        list1.add("李四");
        boolean a=list.containsAll(list1);//list容器是否全部包含list1中的内容
        System.out.println(a);
        list.addAll(list1);//将list1中的内容全部加到list中
        System.out.println(list);
        list.removeAll(list1);//将list1中有的元素全部从list中取出 包括重复的
        System.out.println(list);
        System.out.println("list"+list);
        System.out.println("list1"+list1);
        list.retainAll(list1);//取交集
        System.out.println(list);


    }
}

​

 不同的应用场景需要使用不同发的实现类,下面是不同应用场景的使用推荐

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

外太空的莫扎特

在校生穷逼一个,呜呜呜

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值