List详解


一、泛型的引入

我们之前实现过顺序表,只能保存int类型元素,如果现在要保存指向person类型的引用的顺序表,我们就引入了泛型。

1.泛型类的定义

(1)尖括号<>是泛型的标志
(2)E是类型变量(Type Variable),变量名一般要大写
(3)E在定义时是形参,代表的意思是MyArrayList最终传入的类型,但现在还不知道

public class MyArrayList<E>{
	private E[] array;
	private int size;
}

注意:
1.泛型类可以一次有多个类型变量,用逗号分割
2.不能new泛型类型的数组
3,。简单类型(基本数据类型)不能作为泛型类型的参数

2.泛型类的擦除机制

(1)泛型是作用在编译期间的一种机制,即运行期间没有泛型的概念,它的概念只存在于编译期间。
(2)泛型代码在运行期间,利用Object达到效果,将E擦除为Object,<>当中的数据类型不参与类型的组成,因为编译时被擦除了,所以运行期间没有泛型的概念。

3.使用泛型的好处

(1)可以在存放元素时,自动进行类型的检查
(2)获取元素时,不需要进行强制类型转换

二、包装类的引入

前面我们说了基本数据类型不能作为泛型的参数,那如果需要存基本数据类型,用什么做参数呢?我们就引入了包装类的概念,包装类比基本类数据类型功能更多,更强大。
在这里插入图片描述

三、List的使用

类和接口总览
,color_FFFFFF,t_70)

常见方法

(1)List(线性表)

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

public class TestDemo {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        List<Integer> list1 = new ArrayList<>();
        //boolean add(E e)   尾插e
        list.add(1);
        list.add(2);
        list.add(3);
        System.out.println("尾插后List: " + list);
        list1.add(9);
        System.out.println("尾插后List1 " +list1);
        //void add(int index,E element)   将e插入到index位置
        list.add(1,4);
        list.add(3,5);
        System.out.println("将e插入到index位置后List " +list);
        //boolean addAll(Collection<?extends E>c)   尾插c中所有元素
        list.addAll(list1);
        System.out.println("尾插c中所有元素后List :" + list);
        //E remove(int index)   删除index 位置元素
        list.remove(1);
        System.out.println("删除index位置元素后 :" + list);
        //boolean remove (Object o)   删除遇到的第一个o
        list.remove(1);
        System.out.println("删除遇到的第一个o :" + list);
        //E get(int index)   获取下表为index的元素
        System.out.println("获取下标为index的元素:" + list.get(3));
        //E set(int index,int element)   更新下表为index的元素
        list.set(0,10);
        System.out.println("更新下表为index的元素后List " + list);
        //boolean contains(Object o)   判断线性表中是否有o
        System.out.println("是否含有o:" +list.contains(10));
        //int indexOf(object 0)    返第一个o所在下标
        int index = list.indexOf(10);
        //int lastIndexOf(Object o)    返回最后一个o的下标
        System.out.println("最后一个o下标为: "  + list.lastIndexOf(3));
        //List<E> subList(int fromIndex,int toIndex)   截取部分list
        System.out.println("截取部分List: " +list.subList(0, 2));
        //void clear()    清空
        list.clear();
    }
}

结果如下:
在这里插入图片描述
(2)ArrayList(顺序表)
在这里插入图片描述
(3)LinkedList(链表)
在这里插入图片描述

注意:new ArrayLIst<>() 时,初始容量为0,只是第一次插入一个数据时,容量变为10.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

心事付流年

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

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

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

打赏作者

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

抵扣说明:

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

余额充值