集合——List

**集合与数组
数组中既可以放基本数据类型,也可以放引用数据类型。
集合中只能放引用数据类型,不能放基本数据类型;基本数据类型需要使用包装类来包装,然后再放入集合。

1.List集合
存储一组不唯一,有序(索引顺序)的对象。
主要有ArrayList和Linkedlist两个实现类。

2.ArrayList
在内存中分配连续的空间,实现了长度可变的动态数组。比常规的数组更加灵活,常规的数组要先定义长度,在实际应用过程中不方便。
优点:遍历元素和随机访问元素的效率比较高。
缺点:添加和删除需要大量移动元素效率低,按照内容查询效率低。

3.LinkedList
采用双向链表存储方式。
优点:插入、删除元素效率比较高(前提必须先低效率查询,如果插入删除发生在头尾可以减少查询次数)。
缺点:遍历和访问元素效率低下。

4.ArrayList用法
1>创建一个集合对象

ArrayList list=new ArrayList();

2>添加元素(这里的元素添加都是在末尾添加元素)
在这里插入图片描述

        list.add(1001);
        list.add(1002);
        list.add(998);

3>向指定的索引添加元素
在这里插入图片描述

public class TestArrayList {
    public static void main(String[] args) {
        //创建一个集合对象
        ArrayList list=new ArrayList();
        //添加元素(在末尾添加)
        list.add(1001);
        list.add(1002);
        list.add(998);
        //向指定的索引添加元素
        list.add(3,888);
        System.out.println(list);
    }
}

注意:这里的索引不能超出当前 list 中的数量。
4>将list2中的所有元素添加到list1
list1.addAll(list2);

public class TestArrayList {
    public static void main(String[] args) {
        //创建一个集合对象
        ArrayList list1=new ArrayList();
        //添加元素(在末尾添加)
        list1.add(1001);
        list1.add(1002);
        list1.add(998);
        //将list2中的所有元素添加到list1
        ArrayList list2=new ArrayList();
        list2.add(11);
        list2.add(22);
        list2.add(33);
        list1.addAll(list2);
        System.out.println(list1);
    }
}

5>查看元素的数量

System.out.println(list.size());

5>获取指定索引元素
在这里插入图片描述
6>根据元素找到对应的角标
在这里插入图片描述

public class TestArrayList {
    public static void main(String[] args) {
        //创建一个集合对象
        ArrayList list1=new ArrayList();
        //添加元素(在末尾添加)
        list1.add(1001);
        list1.add(1002);
        list1.add(998);
        list1.add("Hello");
        list1.add("World");
        System.out.println(list1);
        //获取指定索引的元素
        System.out.println(list1.get(1));
        //获取元素的下标
        System.out.println(list1.indexOf(1001));

运行结果:
在这里插入图片描述

7>删除元素
根据索引删除元素
在这里插入图片描述

public class TestArrayList {
    public static void main(String[] args) {
        //创建一个集合对象
        ArrayList list1=new ArrayList();
        //添加元素(在末尾添加)
        list1.add(1001);
        list1.add(1002);
        list1.add(998);
        System.out.println(list1);
        list1.remove(0);
        System.out.println(list1);
    }
}

运行结果:
在这里插入图片描述
8>遍历
方法一:for循环

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

方法二:for-each循环

for(Object element1:list1){
            System.out.println(element1);
        }

方法三:迭代器Iterator

Iterator iterator=list1.iterator();
        while (iterator.hasNext()){//是否还有数据
            System.out.println(iterator.next());
        }

方法四:Lambda表达式+流式编程(JDK1.8)

list1.forEach((i) -> System.out.println(i));

5.LinkedList用法与ArrayList基本一样
多了一些用法
比如addFirst()和addLast()方法
addFirst ()=add(index=0, )
addLast ()=add();

public static void main(String[] args) {
        //创建一个集合对象
        LinkedList list1=new LinkedList();
        //添加元素(在末尾添加)
        list1.add(1001);
        list1.add(1002);
        list1.add(998);
        list1.add("Hello");
        list1.add("World");
        System.out.println(list1);
        list1.addFirst("first");
        list1.addLast("last");
        System.out.println(list1);

        list1.add(0,"头部");
        list1.add("尾部");
        System.out.println(list1);

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SSK2580

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值