java 集合ArrayList <E>

一个集合类 ArrayList

在这里插入图片描述

底层是一个数组结构(因为数组是不可变的,所以会新创一个数组 长度是list+1或-1,执行添加删除操作后,把原数据放到新数组中)

满足了可变数组的实现

E是泛型,ArrayList == ArrayList 这里E是String类型。

泛型只能是引用类型,不能是那八大基本类型 集合里面保存的都是地址值(只能是对象),如果想向集合中插入八大基本类型,那么可以把基本数据类型包装为引用数据类型就OK了。

创造一个ArrayList集合,名称是list,里面装的都是String字符串类型的数据。

 ArrayList<String> list = new ArrayList<>();//创造对象
         创造一个ArrayList集合,名称是array,里面装的都是String字符串类型的数据。JDK1.7以后右侧的<>内可以不写。<String> 泛型(都是这个类型)

add(); 添加元素到队尾

public class Demo01ArrayList {
    public static void main(String[] args) {
        //创造一个ArrayList集合,名称是array,里面装的都是String字符串类型的数据。
        ArrayList<String> list = new ArrayList<>();
        //add队尾添加元素 注意看帮助文档,返回类型boolean
        list.add("wei");
        list.add("shan");
        list.add("3");
        list.add("4");
        boolean add = list.add("5");
        System.out.println(add);
//        remove 移除指定下标元素,返回被移除这个值
        String a=list.remove(3);//index下标的意思
       System.out.println("删除的是"+a);//remove(); 有返回值,被删除的数
        System.out.println(list);//特例:直接对象名就可以输出地址,因为源码处理过,重写的toString方法
        int size = list.size();//获取集合长度
        System.out.println("集合长度"+size);
        //集合的遍历
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
            
        }

ArrayList重写了Object的toString();方法正常情况下,Object输出的是对象的(hashcode)地址,但是这里能直接输出array的值。重写了Object的toString();方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-79zccmKK-1624870855519)(C:\Users\韦善涛\AppData\Roaming\Typora\typora-user-images\image-20210426152222214.png)]

理解,返回值类型是E下划线(返回一个E(String)类型的参数)remove(); 方法的源码是 return oldValue;。E下划线表示

集合的遍历

快捷键 (集合名字).fori ==》生成根据集合长度的循环。

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

集合都是引用

泛型只能是引用类型,不能是那八大基本类型 集合里面保存的都是地址值,集合无法直接储存基本类型,可以储存包装类。

集合:ArrayList list = new ArrayList<>();

如果想向集合中插入八大基本类型,那么可以把基本数据类型包装为引用数据类型就OK了。

基本类型对应的包装类

基本类型包装类(引用类型)都位于java.lang包
byteByte
shortShort
intInteger [特殊]
longLong
floatFloat
doubleDouble
charCharacter [特殊]
booleanBoolean

从JDK1.5开始,支持自动拆箱,装箱。

包装类就可以添加 list3.add(1);(可以添加int的基本数据类型)

public class Demo02 {
    public static void main(String[] args) {
        ArrayList<String> list2 =new ArrayList<>();
        list2.add("wei");
        System.out.println(list2);
        ArrayList<Integer> list3 =new ArrayList<>();
        list3.add(1);//这里边隐含了一个装箱(new Integer(1))
        System.out.println(list3);//判断得出结论,输出不是对象的hashcade值,因为源码重写了toString方法
    }
}
//打印
[wei]
[1]

ArrayList长度获取和数字的长度获取不太一样:

快捷键:list.fori

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

数组:

int[] a={1,99,65,25,5,8,7,6,9,0};
System.out.println(a.length);

linkedList集合 implements List接口

特点:底层是一个链表结构(1.查询慢增删快,2.里边包含了大量操作首位元素的方法。注意:使用linkedList集合特有的方法不能使用多态了(多态的弊端是看不到子类独有的方法))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值