Java ArrayList详解与常用方法

需积分: 5 1 下载量 88 浏览量 更新于2024-08-04 收藏 18KB MD 举报
"day09-ArrayList集合" 在Java编程中,ArrayList是集合框架的一个重要组成部分,属于List接口的实现类。ArrayList提供了动态数组的功能,允许我们在集合中存储多个元素,并且可以根据需要自动调整其大小。这个数据结构允许我们通过索引来访问和操作集合中的元素,就像操作数组一样。 ### 1.ArrayList类概述 ArrayList类是一个基于数组实现的列表,它允许存储任意类型的对象,通过泛型我们可以限制存储元素的数据类型。泛型在Java中是一种强大的工具,用于在编译时检查类型安全,减少运行时错误。例如,当我们创建一个ArrayList<String>实例时,我们确保只能向该集合中添加String类型的对象。 ### 2.ArrayList类的特性 - 动态扩容:ArrayList的容量会在需要时自动增加,以适应添加更多元素的需求。当添加的元素数量超过当前数组容量时,ArrayList会创建一个新的、更大的数组并将所有元素复制到新数组中。 - 随机访问:由于ArrayList的底层实现是数组,所以我们可以使用索引来快速访问和修改任何位置的元素,时间复杂度为O(1)。 - 线程不安全:ArrayList不是线程安全的,意味着在多线程环境下直接操作ArrayList可能会导致数据不一致或抛出异常。如果需要在多线程环境中使用,通常需要配合synchronized关键字或使用CopyOnWriteArrayList等线程安全的集合类。 ### 3.ArrayList类常用方法 #### 3.1 构造方法 - `public ArrayList()`:创建一个空的ArrayList实例,初始容量为10。 #### 3.2 成员方法 - `public boolean remove(Object o)`:删除指定的对象,如果存在的话,返回`true`表示删除成功。 - `public E remove(int index)`:删除指定索引处的元素,并返回被删除的元素。 - `public E set(int index, E element)`:替换指定索引处的元素,返回被替换的元素。 - `public E get(int index)`:返回指定索引处的元素。 - `public int size()`:返回集合中元素的数量。 - `public boolean add(E e)`:在集合末尾添加一个元素。 - `public void add(int index, E element)`:在指定位置插入一个元素。 ### 4. 示例代码 ```java import java.util.ArrayList; public class ArrayListDemo02 { public static void main(String[] args) { // 创建集合 ArrayList<String> array = new ArrayList<String>(); // 添加元素 array.add("hello"); array.add("world"); array.add("java"); // public boolean remove(Object o):删除指定的元素,返回删除是否成功 // array.remove("world"); // array.remove("javaee"); // public E remove(int index):删除指定索引处的元素,返回被删除的元素 // System.out.println(array.remove(1)); // public E set(int index, E element):修改指定索引处的元素,返回被修改的元素 // System.out.println(array.set(1, "Java")); // public E get(int index):返回指定索引处的元素 System.out.println(array.get(1)); // public int size():返回集合中的元素的个数 System.out.println(array.size()); // public boolean add(E e):将指定的元素追加到此集合的末尾 array.add("编程"); // public void add(int index, E element):在此集合中的指定位置插入指定的元素 array.add(1, "学习"); // 打印整个集合 for (String s : array) { System.out.println(s); } } } ``` 在这个示例中,我们展示了如何创建ArrayList,添加元素,获取元素,更改元素,删除元素以及在指定位置插入元素。理解并熟练运用这些方法是使用ArrayList的基础。此外,我们还可以使用迭代器、for-each循环等方式遍历ArrayList中的元素,进行更复杂的操作。在实际开发中,ArrayList常用于处理动态数据集合,如存储用户输入、数据库查询结果等。

以下代码的输出结果是什么?package Day06; import javafx.print.Collation; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class CustDemo { public static void main(String[] args) { addCustInfo("张三"); addInger(123); addall("小胡","老张"); isLastNull(""); sort(); } private static void addCustInfo(String name){ ArrayList<Cust> custs=new ArrayList<>(); Cust cust=new Cust(); cust.setCustName(name); custs.add(cust); System.out.println(custs.get(0).getCustName()); System.out.println("集合的大小为:"+custs.size()); } private static void addInger(int age){ ArrayList<Integer>integers=new ArrayList<>(); integers.add(age); System.out.println(integers.get(0)); System.out.println("集合的大小为:"+integers.size()); } private static void addall(String name,String name2){ ArrayList<String >strings=new ArrayList<>(); strings.add(name); ArrayList<String> strings1=new ArrayList<>(); strings1.add(name2); strings.addAll(strings1); for(String str:strings){ System.out.println(str); } System.out.printf("----->\n"); System.out.println(strings.get(1)); } private static void isLastNull(String name){ ArrayList<String >strings=new ArrayList<>(); strings.add(name); if(strings.size()>0){ System.out.println("非空"); }else { System.out.println("空"); } if(strings.isEmpty()){ System.out.println("空"); }else { System.out.println("非空"); } } private static void sort(){ ArrayList<Integer >integers=new ArrayList<>(); integers.add(1); integers.add(5); integers.add(3); integers.add(9); integers.add(7); integers.sort(Comparator.naturalOrder());//小到大排序 顺序 System.out.println(integers); System.out.println("----->"); integers.sort(Comparator.reverseOrder());//大到小排序 倒序 System.out.println(integers); System.out.println("----->"); Collections.sort(integers);//正序排序 System.out.println(integers); System.out.println("----->"); int y=1; for (Integer num:integers){ System.out.printf("序号为%d:",y); y++; System.out.println(num); } } // private void sunList(){ // // } }

2023-07-14 上传