Java泛型数组ArrayList使用简明教程

news/2024/6/1 22:21:25 标签: java

Java泛型数组ArrayList(类似C++的vector)

在Java中,ArrayListjava.util包中提供的一个常用的动态数组实现,它实现了List接口。下面是ArrayList的一些常见用法和示例:

创建 ArrayList

java">import java.util.ArrayList;
import java.util.List;

public class ArrayListExample {
    public static void main(String[] args) {
        // 创建一个空的 ArrayList
        List<String> arrayList = new ArrayList<>();

        // 创建带有初始容量的 ArrayList
        List<Integer> intList = new ArrayList<>(10);
    }
}

添加元素

java">List<String> fruits = new ArrayList<>();

// 添加单个元素
fruits.add("Apple");
fruits.add("Banana");

// 添加一组元素
List<String> moreFruits = Arrays.asList("Orange", "Grapes", "Mango");
fruits.addAll(moreFruits);

获取元素

java">String firstFruit = fruits.get(0);
System.out.println("First fruit: " + firstFruit);

遍历 ArrayList

java">for (String fruit : fruits) {
    System.out.println(fruit);
}

// 使用迭代器遍历
Iterator<String> iterator = fruits.iterator();
while (iterator.hasNext()) {
    System.out.println(iterator.next());
}

删除元素

java">fruits.remove("Banana");

判断元素是否存在

java">boolean containsApple = fruits.contains("Apple");
System.out.println("Contains Apple? " + containsApple);

获取 ArrayList 大小

java">int size = fruits.size();
System.out.println("Size of ArrayList: " + size);

转换为数组

java">String[] fruitArray = new String[fruits.size()];
fruits.toArray(fruitArray);

清空 ArrayList

java">fruits.clear();

检查 ArrayList 是否为空

java">boolean isEmpty = fruits.isEmpty();
System.out.println("Is ArrayList empty? " + isEmpty);

替换元素

java">fruits.set(0, "NewApple");

截取部分元素

java">List<String> subList = fruits.subList(1, 3);

访问元素通过索引

java">List<Integer> numbers = new ArrayList<>();
numbers.add(10);
numbers.add(20);
numbers.add(30);

// 访问第一个元素
int firstNumber = numbers.get(0);
System.out.println("First number: " + firstNumber);

// 访问最后一个元素
int lastNumber = numbers.get(numbers.size() - 1);
System.out.println("Last number: " + lastNumber);

设置元素通过索引

java">// 设置第一个元素
numbers.set(0, 100);

// 设置最后一个元素
numbers.set(numbers.size() - 1, 300);

遍历并修改元素

java">List<Integer> scores = new ArrayList<>(Arrays.asList(90, 85, 88, 92));

for (int i = 0; i < scores.size(); i++) {
    int currentScore = scores.get(i);
    // 在遍历过程中修改元素
    scores.set(i, currentScore + 5);
}

在特定位置插入元素

java">// 在第二个位置插入元素
numbers.add(1, 50);

删除特定位置的元素

java">// 删除第三个位置的元素
numbers.remove(2);

判断索引是否有效

java">int indexToCheck = 5;

if (indexToCheck >= 0 && indexToCheck < numbers.size()) {
    int valueAtIndex = numbers.get(indexToCheck);
    System.out.println("Value at index " + indexToCheck + ": " + valueAtIndex);
} else {
    System.out.println("Invalid index");
}

使用迭代器更新元素

java">Iterator<Integer> iterator = numbers.iterator();
while (iterator.hasNext()) {
    int currentValue = iterator.next();
    // 在迭代器中更新元素
    iterator.set(currentValue * 2);
}

设置或预估其容量

java">// 创建一个ArrayList
ArrayList<String> arrayList = new ArrayList<>();
// 预估容量为20
arrayList.ensureCapacity(20);

在这个例子中,ensureCapacity(20) 方法告诉ArrayList预估容量为20,然后我们可以添加元素到ArrayList。这可以提高性能,因为它避免了在每次添加元素时都进行数组的重新分配。不过,预估容量的方法并不会实际地更改列表的大小,它只是预先分配内存以便后续的添加操作,以减少动态扩展的开销。

这些是ArrayList的一些基本用法。需要注意的是,ArrayList是基于动态数组实现的,它会自动调整大小。


http://www.niftyadmin.cn/n/5286755.html

相关文章

前端框架前置学习(4) AJAX

同步代码和异步代码 同步代码 浏览器按照我们书写代码的顺序一行一行地执行程序.浏览器会等待代码的解析和工作,在上一行代码完成之后才会执行下一行代码.这被称之为同步程序 逐行执行,需要原地等待结果 异步代码 异步编码技术使得程序可以在执行一个可能长期运行的任务的…

悟的数组匹配

题目&#xff1a; 描述 牛牛刚学会数组不久&#xff0c;他拿到两个数组 a 和 b&#xff0c;询问 b 的哪一段连续子数组之和与数组 a 之和最接近。 如果有多个子数组之和同样接近&#xff0c;输出起始点最靠左的数组。 输入描述&#xff1a; 第一行输入两个正整数 n 和 m &…

【华为数据之道学习笔记】6-7打造业务自助分析的关键能力

华为公司将自助分析作为一种公共能力&#xff0c;在企业层面进行了统一构建。一方面&#xff0c;面向不同的消费用户提供了差异性的能力和工具支撑&#xff1b;另一方面&#xff0c;引入了“租户”概念&#xff0c;不同类型的用户可以在一定范围内分析数据、共享数据结果。 1. …

cfa一级考生复习经验分享系列(十一)

理工科已经毕业&#xff0c;正在工作&#xff0c;毫无金融背景。一共准备了四个月&#xff0c;每天下班和周末抽时间看看。前三个月节奏比较松散&#xff0c;毕竟时不时有人叫我出去high&#xff0c;最后一个月认真看了看。 用到的资料 JC网课&#xff0c;官方Mock&#xff0c;…

Microsoft Edge的详细使用方法和心得

Microsoft Edge的详细使用方法和心得如下&#xff1a; 使用方法&#xff1a; 打开Microsoft Edge浏览器&#xff0c;点击右上角的“三个点”图标&#xff0c;打开下拉菜单。在下拉菜单中&#xff0c;选择“设置”。在设置页面中&#xff0c;选择“导入浏览器数据”。在“导入…

.NET 8 网络改进

作者&#xff1a; Mňa - Software Engineer, .NET Natalia Kondratyeva - Software Engineer, .NET 排版&#xff1a;Alan Wang 随着新的 .NET 版本的发布&#xff0c;发表有关网络空间中新的有趣变化的博客文章已经成为一种传统。今年&#xff0c;我们要介绍 HTTP 部分的变化…

Oracle动态性能视图 v$parameter 和 v$parameter2 的区别

v$parameter 的说明见这里&#xff1a; V$PARAMETER displays information about the initialization parameters that are currently in effect for the session. v$parameter2 的说明见这里&#xff1a; V$PARAMETER2 displays information about the initialization paramet…

【单调队列】LeetCode1499:满足不等式的最大值

涉及知识点 单调队列 题目 给你一个数组 points 和一个整数 k 。数组中每个元素都表示二维平面上的点的坐标&#xff0c;并按照横坐标 x 的值从小到大排序。也就是说 points[i] [xi, yi] &#xff0c;并且在 1 < i < j < points.length 的前提下&#xff0c; xi &…