Java ArrayList
ArrayList 类是一个å�¯ä»¥åЍæ€�修改的数组,与普通数组的区别就是它是没有固定大å°�çš„é™�制,我们å�¯ä»¥æ·»åŠ æˆ–åˆ é™¤å…ƒç´ ã€‚
ArrayList 继承了 AbstractList ,并实现了 List 接�。
ArrayList ç±»ä½�于 java.util 包ä¸ï¼Œä½¿ç”¨å‰�需è¦�å¼•å…¥å®ƒï¼Œè¯æ³•æ ¼å¼�如下:
import java.util.ArrayList; // 引入 ArrayList 类 ArrayList<E> objectName =new ArrayList<>();  // �始化
- E: 泛型数�类型,用于设置 objectName 的数�类型,�能为引用数�类型。
- objectName: 对象�。
ArrayList 是一个数组队列,æ��ä¾›äº†ç›¸å…³çš„æ·»åŠ ã€�åˆ é™¤ã€�修改ã€�é��历ç‰åŠŸèƒ½ã€‚
æ·»åŠ å…ƒç´
ArrayList ç±»æ��ä¾›äº†å¾ˆå¤šæœ‰ç”¨çš„æ–¹æ³•ï¼Œæ·»åŠ å…ƒç´ åˆ° ArrayList å�¯ä»¥ä½¿ç”¨ add() 方法:
实例
public class RunoobTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Runoob");
sites.add("Taobao");
sites.add("Weibo");
System.out.println(sites);
}
}
以上实例,执行输出结果为:
[Google, Runoob, Taobao, Weibo]
访问元ç´
访问 ArrayList ä¸çš„å…ƒç´ å�¯ä»¥ä½¿ç”¨ get() 方法:
实例
public class RunoobTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Runoob");
sites.add("Taobao");
sites.add("Weibo");
System.out.println(sites.get(1)); // 访问第二个元ç´
}
}
注�:数组的索引值从 0 开始。
以上实例,执行输出结果为:
Runoob
修改元ç´
如果è¦�修改 ArrayList ä¸çš„å…ƒç´ å�¯ä»¥ä½¿ç”¨ set() 方法:
实例
public class RunoobTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Runoob");
sites.add("Taobao");
sites.add("Weibo");
sites.set(2, "Wiki"); // 第一个�数为索引�置,第二个为�修改的值
System.out.println(sites);
}
}
以上实例,执行输出结果为:
[Google, Runoob, Wiki, Weibo]
åˆ é™¤å…ƒç´
如果è¦�åˆ é™¤ ArrayList ä¸çš„å…ƒç´ å�¯ä»¥ä½¿ç”¨ remove() 方法:
实例
public class RunoobTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Runoob");
sites.add("Taobao");
sites.add("Weibo");
sites.remove(3); // åˆ é™¤ç¬¬å››ä¸ªå…ƒç´
System.out.println(sites);
}
}
以上实例,执行输出结果为:
[Google, Runoob, Taobao]
计算大�
如果è¦�计算 ArrayList ä¸çš„å…ƒç´ æ•°é‡�å�¯ä»¥ä½¿ç”¨ size() 方法:
实例
public class RunoobTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Runoob");
sites.add("Taobao");
sites.add("Weibo");
System.out.println(sites.size());
}
}
以上实例,执行输出结果为:
4
è¿ä»£æ•°ç»„列表
我们å�¯ä»¥ä½¿ç”¨ for æ�¥è¿ä»£æ•°ç»„列表ä¸çš„å…ƒç´ ï¼š
实例
public class RunoobTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Runoob");
sites.add("Taobao");
sites.add("Weibo");
for (int i = 0; i < sites.size(); i++) {
System.out.println(sites.get(i));
}
}
}
以上实例,执行输出结果为:
Google Runoob Taobao Weibo
也å�¯ä»¥ä½¿ç”¨ for-each æ�¥è¿ä»£å…ƒç´ :
实例
public class RunoobTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Runoob");
sites.add("Taobao");
sites.add("Weibo");
for (String i : sites) {
System.out.println(i);
}
}
}
以上实例,执行输出结果为:
Google Runoob Taobao Weibo
其他的引用类型
ArrayList ä¸çš„å…ƒç´ å®žé™…ä¸Šæ˜¯å¯¹è±¡ï¼Œåœ¨ä»¥ä¸Šå®žä¾‹ä¸ï¼Œæ•°ç»„åˆ—è¡¨å…ƒç´ éƒ½æ˜¯å—符串 String 类型。
如果我们è¦�å˜å‚¨å…¶ä»–类型,而 <E> å�ªèƒ½ä¸ºå¼•用数æ�®ç±»åž‹ï¼Œè¿™æ—¶æˆ‘们就需è¦�使用到基本类型的包装类。
基本类型对应的包装类表如下:
| 基本类型 | 引用类型 |
|---|---|
| boolean | Boolean |
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Character |
æ¤å¤–,BigIntegerã€�BigDecimal 用于高精度的è¿�算,BigInteger 支æŒ�ä»»æ„�精度的整数,也是引用类型,但它们没有相对应的基本类型。
ArrayList<Integer> li=new Arraylist<>(); // å˜æ”¾æ•´æ•°å…ƒç´ ArrayList<Character> li=new Arraylist<>(); // å˜æ”¾å—符元ç´
以下实例使用 ArrayList å˜å‚¨æ•°å—(使用 Integer 类型):
实例
public class RunoobTest {
public static void main(String[] args) {
ArrayList<Integer> myNumbers = new ArrayList<Integer>();
myNumbers.add(10);
myNumbers.add(15);
myNumbers.add(20);
myNumbers.add(25);
for (int i : myNumbers) {
System.out.println(i);
}
}
}
以上实例,执行输出结果为:
10 15 20 25
ArrayList 排�
Collections 类也是一个é�žå¸¸æœ‰ç”¨çš„类,ä½�于 java.util 包ä¸ï¼Œæ��供的 sort() 方法å�¯ä»¥å¯¹å—符或数å—列表进行排åº�。
ä»¥ä¸‹å®žä¾‹å¯¹å—æ¯�进行排åº�:
实例
import java.util.Collections; // 引入 Collections 类
public class RunoobTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Taobao");
sites.add("Wiki");
sites.add("Runoob");
sites.add("Weibo");
sites.add("Google");
Collections.sort(sites); // å—æ¯�排åº�
for (String i : sites) {
System.out.println(i);
}
}
}
以上实例,执行输出结果为:
Google Runoob Taobao Weibo Wiki
以下实例对数å—进行排åº�:
实例
import java.util.Collections; // 引入 Collections 类
public class RunoobTest {
public static void main(String[] args) {
ArrayList<Integer> myNumbers = new ArrayList<Integer>();
myNumbers.add(33);
myNumbers.add(15);
myNumbers.add(20);
myNumbers.add(34);
myNumbers.add(8);
myNumbers.add(12);
Collections.sort(myNumbers); // æ•°å—æŽ’åº�
for (int i : myNumbers) {
System.out.println(i);
}
}
}
以上实例,执行输出结果为:
8 12 15 20 33 34
Java ArrayList 方法
Java ArrayList 常用方法列表如下:
| 方法 | �述 |
|---|---|
| add() | å°†å…ƒç´ æ�’入到指定ä½�置的 arraylist ä¸ |
| addAll() | æ·»åŠ é›†å�ˆä¸çš„æ‰€æœ‰å…ƒç´ 到 arraylist ä¸ |
| clear() | åˆ é™¤ arraylist ä¸çš„æ‰€æœ‰å…ƒç´ |
| clone() | �制一份 arraylist |
| contains() | 判æ–å…ƒç´ æ˜¯å�¦åœ¨ arraylist |
| get() | 通过索引值获å�– arraylist ä¸çš„å…ƒç´ |
| indexOf() | 返回 arraylist ä¸å…ƒç´ 的索引值 |
| removeAll() | åˆ é™¤å˜åœ¨äºŽæŒ‡å®šé›†å�ˆä¸çš„ arraylist é‡Œçš„æ‰€æœ‰å…ƒç´ |
| remove() | åˆ é™¤ arraylist 里的å�•ä¸ªå…ƒç´ |
| size() | 返回 arraylist é‡Œå…ƒç´ æ•°é‡� |
| isEmpty() | åˆ¤æ– arraylist 是å�¦ä¸ºç©º |
| subList() | 截å�–部分 arraylist çš„å…ƒç´ |
| set() | 替æ�¢ arraylist 䏿Œ‡å®šç´¢å¼•çš„å…ƒç´ |
| sort() | 对 arraylist å…ƒç´ è¿›è¡ŒæŽ’åº� |
| toArray() | 将 arraylist 转�为数组 |
| toString() | å°† arraylist 转æ�¢ä¸ºå—符串 |
| ensureCapacity() | 设置指定容�大�的 arraylist |
| lastIndexOf() | è¿”å›žæŒ‡å®šå…ƒç´ åœ¨ arraylist 䏿œ€å�Žä¸€æ¬¡å‡ºçŽ°çš„ä½�ç½® |
| retainAll() | ä¿�ç•™ arraylist ä¸åœ¨æŒ‡å®šé›†å�ˆä¸ä¹Ÿå˜åœ¨çš„é‚£äº›å…ƒç´ |
| containsAll() | 查看 arraylist 是å�¦åŒ…å�«æŒ‡å®šé›†å�ˆä¸çš„æ‰€æœ‰å…ƒç´ |
| trimToSize() | å°† arraylist ä¸çš„容é‡�调整为数组ä¸çš„å…ƒç´ ä¸ªæ•° |
| removeRange() | åˆ é™¤ arraylist 䏿Œ‡å®šç´¢å¼•之间å˜åœ¨çš„å…ƒç´ |
| replaceAll() | 将给定的æ“�作内容替æ�¢æŽ‰æ•°ç»„䏿¯�ä¸€ä¸ªå…ƒç´ |
| removeIf() | åˆ é™¤æ‰€æœ‰æ»¡è¶³ç‰¹å®šæ�¡ä»¶çš„ arraylist å…ƒç´ |
| forEach() | é��历 arraylist 䏿¯�ä¸€ä¸ªå…ƒç´ å¹¶æ‰§è¡Œç‰¹å®šæ“�作 |
更多 API 方法�以查看:https://www.runoob.com/manual/jdk11api/java.base/java/util/ArrayList.html
Java 集�框架
lxw
105***3195@qq.com
ç‰ä»·äºŽ:
for(int i = 0; i < myNumbers.size(); i++){ int j = myNumbers.get(i); }lxw
105***3195@qq.com