ArrayList集合

一.掌握ArrayList集合常见方法的使用

import java.util.ArrayList;

1.1调用空参构造创建ArrayList集合对象

ArrayList list = new ArrayList();

1.2 ArrayList集合类提供了add方法可以添加数据

list.add(1);
list.add(2.2);
list.add('a');
list.add(true);
list.add("黑马");

//3.注意:打印语句和集合底层有处理,直接打印集合对象名,不会打印集合地址值,而是打印出集合中的数据
System.out.println(list);
  • 看似此时集合什么类型的数据都能添加,但实际上加入集合后都变成了Object类型 ,如果一个数据变成了Object类型,那么它原来类型的功能就不能使用了 Object data = list.get(4);
  • 获取集合中指定索引位置的数据,调用 get(索引)
    方法,集合的索引从0开始

1.3 创建集合,要制定集合中存储数据的类型,格式:ArrayList<数据类型> 集合名 = new ArrayList<>();

//需求:创建一个集合,让其只能存储String字符串
ArrayList<String> strList = new ArrayList<>();
  • 注意:<数据类型>是Java中的泛型,这个数据类型只能使用引用数据类型,不能使用基本数据类型,如果非要存储基本数据类型,请使用它们对应的包装类,技巧:首字母大写
  • byte:Byte
    short:Short
    int:Integer
    long:Long
    float:Float
    double:Double
    char:Character
    boolean:Boolean
       ArrayList<Integer> intList = new ArrayList<>();
        intList.add(1);
        intList.add(2);
        intList.add(3);

        System.out.println(intList);

二.掌握ArrayList集合常见方法的使用

import java.util.ArrayList;

2.1创建一个存储String字符串的ArrayList集合对象

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

2.2 add(E e):添加数据到集合容器的尾部

list.add("吴");
list.add("罗");
list.add("峰");
list.add("李");
System.out.println(list);

//[吴, 罗, 峰, 李]

2.3 add(int index, E element):往指定index索引位置添加指定的element数据

list.add(0, "徐");
System.out.println(list);

//[徐, 吴, 罗, 峰, 李]

2.4 get(int index):获取指定索引位置的数据

String str = list.get(1);
System.out.println(str);

//吴

2.5 set(int index, E element):设置集合中指定索引index位置,为指定的数据element

 String setData = list.set(0, "吴签");
 System.out.println(list);
//返回的是被修改的数据
System.out.println(setData);

练习

需求:现在假如购物车中存储了如下这些商品:Java入门,宁夏枸杞,黑枸杞,人字拖,特级枸杞,枸杞子。
现在用户不想买枸杞了,选择了批量删除,请完成该需求

public static void main(String[] args) {
        //1.创建ArrayList集合,泛型声明为String
        ArrayList<String> list = new ArrayList<>();

        //2.依次往集合中添加指定的商品名称
        list.add("Java入门");
        list.add("宁夏枸杞");
        list.add("黑枸杞");
        list.add("人字拖");
        list.add("特级枸杞");
        list.add("枸杞子");
        System.out.println(list);

        //3.遍历集合,快捷方式:集合名.fori
        /*
        for (int i = 0; i < list.size(); i++) {
            //调用集合的get方法,获取i索引位置的商品名称
            String name = list.get(i);

            //判断字符串name中是否包含"枸杞"
            if (name.contains("枸杞")) {
                //删除i索引位置的数据
                list.remove(i);
                //使用i--抵消i++
                i--;
            }
        }
        */

        //也可以倒着遍历集合,进行批量删除
        for (int i = list.size() - 1; i >= 0; i--) {
            String name = list.get(i);
            if (name.contains("枸杞")) {
                list.remove(i);
            }
        }

        System.out.println(list);
    }
}

### 关于Java `ArrayList`集合的使用方法、特性及示例 #### 方法概述 对于向`ArrayList`中添加元素的操作,可以通过调用`add()`方法来完成。此操作支持两种形式:一种是在列表末尾追加单个元素;另一种是指定位置插入元素[^1]。 ```java // 创建一个新的ArrayList实例 ArrayList<String> lists = new ArrayList<>(); lists.add("java"); // 向列表末尾添加字符串 "java" lists.add(0, "C"); // 将字符串 "C" 插入到索引为0的位置 lists.add(1, "python"); // 将字符串 "python" 插入到索引为1的位置 System.out.println(lists); ``` 除了上述提到的`add()`方法外,还有用于替换已有元素的方法——`set(int index,E element)`。该方法接收两个参数:目标位置以及新的值,并返回被覆盖掉的老值[^2]。 ```java import java.util.ArrayList; public class Main { public static void main(String[] args){ ArrayList<String> list = new ArrayList<>(); list.add("old"); String oldValue = list.set(0,"new"); // 替换第一个位置上的元素 System.out.println(oldValue); // 输出:"old" System.out.println(list.get(0)); // 输出:"new" } } ``` 另外一个重要功能是由`addAll(Collection<? extends E> c)`所提供的批量增加能力。这使得开发者能够一次性将另一个集合中的全部成员加入当前`ArrayList`之中[^3]。 ```java ArrayList<Integer> originalList = new ArrayList<>(Arrays.asList(1, 2)); ArrayList<Integer> additionalElements = new ArrayList<>(Arrays.asList(3, 4)); originalList.addAll(additionalElements); for(Integer num : originalList) { System.out.print(num + " "); } // 打印结果应为:“1 2 3 4 ” ``` #### 特性描述 - **动态大小**:与固定尺寸的传统数组相比,`ArrayList`具备灵活调整容量的能力,在必要时自动增长内部结构以容纳更多项。 - **存储类型**:尽管不能直接保存原始数据类型(如int),但是通过对应的封装器类(例如Integer)间接实现这一点成为可能。此外也适用于用户自定义的对象实例。 - **索引访问效率高**:由于底层采用连续内存布局,因此依据特定下标获取或修改项目非常迅速,平均情况下只需常数级别的时间开销O(1)[^4]。 - **维护插入顺序**:每当有新条目进来都会按照实际发生的先后次序排列,不会打乱原有的序列关系。 - **允许多重出现相同的数据点**:即同一个实体可以在不同的地方多次存在而不会引发异常情况发生。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值