文章目录
前言
我们在存放对象时可以使用类数组,但是这有明显的弊端,数组的大小是固定的,当对象数量过多时,数组会发生越界,你可能在想,那就尽可能让数组开大一点,可是如果数组开大,数组中又会存在空间浪费问题,并且,也并未解决数组会越界的问题。
这时候我们就需要用到集合,接下来我们重点讲java中的一种集合类型Arraylist。
一、ArrayList是什么?
Arraylist是java中的一种集合(collection)类型。它实现了list接口,能够存储多个对象并按索引访问和操作这些对象。与数组不同的是,arraylist的大小可以动态调整,是动态数组的实现方式之一,并且提供了一些方便的方法来添加、删除和访问元素。
二、ArrayList的基本操作
1.创建一个ArrayList的对象
1.在使用 ArrayList 前,必须先导入包含该类的 java.util 包。
import java.util.ArrayList;
2.创建 ArrayList 对象:使用 new 关键字创建一个新的 ArrayList 对象。
ArrayList<Type> list = new ArrayList<Type>();
其中 Type 表示该 ArrayList 存储的对象类型,表示是引用数据类型。
注意
其中你需要注意的是ArrayList 存储不能直接使用int,char…这些都是基本数据类型。
import java.util.*;
public class Test1{
public static void main(String [] args){
ArrayList<int> list=new ArrayList<int>();
}
}
在 Java 中,泛型类型参数只能为引用类型,并不能为基本数据类型。所以,将 int 作为泛型类型参数是不合法的。如果想要使用整数数组作为元素类型,则应该使用 Integer 作为泛型类型参数。
正确的写法应该为:
ArrayList<Integer> list=new ArrayList<Integer>();
此外下面是基本数据类型对应的引用数据类型
基本数据类型 | 引用数据类型 |
---|---|
byte | Byte |
short | Short |
int | Integer (特殊) |
long | Long |
float | Float |
double | Double |
char | Character (特殊) |
boolean | Boolean |
2.基本操作
(1)添加元素
1.add(Object element)
在列表末尾添加一个元素;
import java.util.*;
public class Test1{
public static void main(String [] args){
ArrayList<Integer> list=new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
System.out.println(list);
}
}
2.add(int index,Object element)
在列表的index位置(index从0开始)添加一个元素;
import java.util.*;
public class Test1{
public static void main(String [] args){
ArrayList<Integer> list=new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(1,10);
System.out.println(list);
}
}
3.addAll(int index,Collection c)
在index位置插上集合c的所有元素
import java.util.*;
public class Test1{
public static void main(String [] args){
ArrayList<String> list=new ArrayList<String>();
ArrayList<String> list1=new ArrayList<String>();
list.add("小明");
list.add("小美");
list1.add("坤坤1");
list1.add("坤坤2");
System.out.println(list);
list.addAll(1,list1);
System.out.println(list);
}
}
(2)删除元素
1.remove(int index)
删除下标为index的元素
import java.util.*;
public class Test1{
public static void main(String [] args){
ArrayList<String> list=new ArrayList<String>();
list.add("小明");
list.add("小美");
list.add("小张");
System.out.println(list);
list.remove(1);
System.out.println(list);
}
}
2.remove(Object element)
删除集合中第一次出现的element
import java.util.*;
public class Test1{
public static void main(String [] args){
ArrayList<String> list=new ArrayList<String>();
list.add("小明");
list.add("小美");
list.add("小明");
System.out.println(list);
list.remove("小明");
System.out.println(list);
}
}
3.removeAll()
将容器中与指定集合里相同的元素全部删除。即在当前集合中遍历,并从集合中删掉所有在参数集合中也存在的元素。
import java.util.*;
public class Test1{
public static void main(String [] args){
ArrayList<String> list=new ArrayList<String>();
list.add("小明");
list.add("小美");
list.add("小张");
Collection<String> list1 = new ArrayList<>();
list1.add("小明");
list1.add("小张");
System.out.println(list);
list.removeAll(list1);
System.out.println(list);
}
}
4.clear()
清空集合中的所有元素。
import java.util.*;
public class Test1{
public static void main(String [] args){
ArrayList<String> list=new ArrayList<String>();
list.add("小明");
list.add("小美");
list.add("小张");
System.out.println(list);
list.clear();
System.out.println(list);
}
}
(3)查找元素
1.get(int index)
返回下标为index的元素
import java.util.*;
public class Test1{
public static void main(String [] args){
ArrayList<String> list=new ArrayList<String>();
list.add("小明");
list.add("小美");
list.add("小张");
System.out.println(list);
System.out.println(list.get(1));
}
}
2.contains(Object element)
判断集合中是否含有元素element,若有则返回true
import java.util.*;
public class Test1{
public static void main(String [] args){
ArrayList<String> list=new ArrayList<String>();
list.add("小明");
list.add("小美");
list.add("小张");
System.out.println(list.contains("小明"));
System.out.println(list.contains("小李"));
}
}
3.indexOf(Object element)
从头开始找元素element,若有则返回其下标,若无则返回-1
import java.util.*;
public class Test1{
public static void main(String [] args){
ArrayList<String> list=new ArrayList<String>();
list.add("小明");
list.add("小美");
list.add("小张");
System.out.println(list.indexOf("小明"));
System.out.println(list.indexOf("小李"));
}
}
4.lastIndexOf(Object element)
从尾开始找元素element,若有则返回其下标,若无则返回-1
操作同3
(4)修改元素
1.set(int index,Object element)
用元素element取代下标为index的值
import java.util.*;
public class Test1{
public static void main(String [] args){
ArrayList<String> list=new ArrayList<String>();
list.add("小明");
list.add("小美");
list.add("小张");
System.out.println(list);
String str="小花";
list.set(1,str);
System.out.println(list);
}
}
(5)遍历集合
1.for循环
需要用到size()得到集合元素的数量。
import java.util.*;
public class Test1{
public static void main(String [] args){
ArrayList<String> list=new ArrayList<String>();
ArrayList<String> list1=new ArrayList<String>();
list.add("小明");
list.add("小美");
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
}
2.加强for循环(for each)(推荐)
在Java中,for each循环又称作增强型for循环,可以用于遍历数组或集合。
其基本语法如下:
for (元素类型Type 元素变量element : 遍历对象object) {
// 执行代码块
}
for each循环可以防止数组越界错误和漏掉某些元素的情况发生,可以提高代码的可读性和易用性。
import java.util.*;
public class Test1{
public static void main(String [] args){
ArrayList<String> list=new ArrayList<String>();
ArrayList<String> list1=new ArrayList<String>();
list.add("小明");
list.add("小美");
list.add("小张");
for(String i:list){
System.out.println(i);
}
}
}
(6)集合的其它操作
1.toArray()
将集合转化为数组
2.toString()
将集合转化为字符串
3.isEmpty()
判断结合是否有元素有则返回true
4.clone()
集合的克隆
5.sort()
对集合进行排序
总结
以上就是今天要讲的内容,本文简单介绍了ArrayList的创建以及基本操作方法。