笔记:ArrayList集合

本文详细介绍了Java中的ArrayList容器,包括其特点、数组和集合的区别、包装类的使用、泛型的定义以及常用方法如添加、删除、修改元素和遍历。同时涵盖了存储int和char,以及对象的具体示例。
摘要由CSDN通过智能技术生成

一、引言

1.概述

        可以自动扩容(可长可短,自由伸缩)的容器

2.数组和集合的区别

数组:
        ①长度固定

        ②可以存基本数据类型和引用数据类型

集合:

         ①长度可变(多了自动加,少了自动减)  

        ②可以存引用数据类型,但不能存基本数据类型(如果要存,需要将其变成对应的包装类)

3.包装类(除了char和int其他全部首字母大写)

 集合如果要存基本数据类型,需要将其变成对应的包装类,规则如下:


4.泛型<E>

①定义:限定集合中存储数据的类型

②书写方式:

在JDK7之前,左右两边都要写<数据类型>

ArrayList<String> list = new ArrayList<String>();

 JDK7:左边要写,右边可以不写,但是必须要加<>

ArrayList<String> list = new ArrayList<>();

二、常用方法

1.打印

 ArrayList是java已写好的一个类,这个类在底层做了一些特殊处理。

使得打印输出的不是地址值,而是集合中存储的数据内容,在展示的时候会拿[]将所有的数据进行包裹。

ArrayList<String> list = new ArrayList<>();
System.out.println(list);//[]

2.添加元素

 boolean   add(E e)          添加成功返回true(任何时候都能添加成功,即任何时候都返回true)

boolean result1=list.add("aaa");
System.out.println(result1);//true

 由于总是返回true,所以我们一般不在意他的返回值,直接调用即可

ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
System.out.println(list);//[aaa, bbb, ccc]

3.删除元素

①boolean   remove(E e)          删除成功返回true

ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("aaa");
list.add("bbb");

boolean result1=list.remove("aaa");
System.out.println(result1);//true
System.out.println(list);//[aaa, bbb]

boolean result2=list.remove("ddd");
System.out.println(result2);//false

注:

        如果有多个相同的数据,每次只能删除第一个

        如果要删除的元素不存在,则视为删除失败,返回false

②E   remove(int index)          删除对应下标元素,同时返回被删除的元素值

ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");

String str=list.remove(0);
System.out.println(str);//aaa
System.out.println(list);//[bbb]

4.修改元素

 E    set(int index,E e)          根据下标修改对应位置的元素,并返回修改前的元素值

ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");

String str=list.set(1,"ccc");
System.out.println(str);//bbb
System.out.println(list);//[aaa, ccc]

5.遍历

①E    get(int index)          根据下标查找对应位置的元素值返回

②int  size()         获取集合的长度

ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");

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

 三、特殊情况

1.存储int和char

 jdk5以后,int和Integer,char和Character之间是可以互相转化的,可以直接输入数字/字符添加元素。

public static void main(String[] args) {
    ArrayList<Integer> list1 =new ArrayList<>();
    ArrayList<Character> list2 =new ArrayList<>();

    list1.add(1);
    list1.add(2);
    list1.add(3);

    list2.add('a');
    list2.add('b');
    list2.add('c');

    for (int i = 0; i < list1.size(); i++) {
        System.out.print(list1.get(i)+" ");
     }
     //1 2 3 
     System.out.println();

     for (int i = 0; i < list2.size(); i++) {
        System.out.print(list2.get(i)+" ");
     }
     //a b c 
}

2.存储对象

public class Demo {
    public static void main(String[] args) {
        //1.创建集合
        ArrayList<Student> list = new ArrayList<>();

        //2.创建对象
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {
            Student s = new Student();
            System.out.println("请输入第" + (i + 1) + "位姓名");
            String name = sc.next();
            System.out.println("请输入第" + (i + 1) + "位年龄");
            int age = sc.nextInt();
            s.setName(name);
            s.setAge(age);
            list.add(s);
        }
//        Student s1=new Student("zhangsan",23);
//        Student s2=new Student("lisi",24);
//        Student s3=new Student("wangwu",25);

        //3.添加元素
        //list.add(s1);
        //list.add(s2);
        //list.add(s3);

        //4.遍历
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            System.out.println("姓名:" + stu.getName() + ",年龄:" + stu.getAge());
        }
    }
}

注:

由于集合长度可长可短,自动伸缩,刚创建时size=0for的判断条件就不能写成i < list.size(),而需要自己手动限定

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值