在java中ArrayList的本质是以数组形式存储数据的,但其又不同于数组,数组一旦分配内存,长度大小不变,但ArrayList是可以预判当前的空间是否充足再决定要不要扩扩大内存空间的;
1.ArrayList的特点、用法
①ArrayList(见名知意,本质上是一个可动态修改的数组,无固定的大小限制)类,继承于AbstractList,位于java.util包中,故在使用前需用import引入:
import java.util.ArrayList;
②使用方法:ArrayList<E> ObjectName =new ArrayList<>();
-其中E表示泛型(只能是引用数据类型,若要使用基本数据类型必须将其转化成对应的包装类)
-ObjectName(代表对象名eg:ArrayList<usre> list=new ArrayList<>();)
③ArrayList提供的相关方法(方法很多,具体可在API文档中查询,下面说几个常用的)
(1)boolean add(E e) {}
追加元素,返回值表示是否添加成功
(2)boolean remove(E e) {}
删除指定元素,返回值表示是否删除成功
(3)E remove(int index) {}
删除指定索引的元素,返回被删除元素
(4)E set(int index,E e) {}
修改指定索引的元素,返回原来的元素
(5)E get(nt index) {}
获取指定索引的元素
(6)int size( ) {}
返回集合中元素的个数
2.案例分析
需求:在ArrayList集合中添加一组元素(用键盘录入方式)并判断某个具体的元素是否在集合中,若存在则根据下标返回对应的信息,若不存再,则提示未查询到;
import java.util.ArrayList;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
//添加用户对象 判断是否存在
ArrayList<usre> list=new ArrayList<>();
Scanner sc=new Scanner(System.in);
for (int i = 0; i < 3; i++) {
System.out.println("请输入第"+(i+1)+"个用户的信息");
usre u=new usre();
System.out.println("请输入用户id");
String id=sc.next();
u.setId(id);
System.out.println("请输入用户姓名:");
String name=sc.next();
u.setUsername(name);
System.out.println("请输入用户密码:");
String password=sc.next();
u.setPassword(password);
list.add(u);
}
for (int i = 0; i < list.size(); i++) {
usre uu=list.get(i);
System.out.println(uu.getId()+ "\t" + uu.getUsername()+ "\t" + uu.getPassword());
}
System.out.println("请输入你要查询的用户id:");
String fid=sc.next();
int flag=find(list,fid);
if(flag!=-1)
{
System.out.println("此人信息如下:");
System.out.println(list.get(flag).getId()+list.get(flag).getUsername());
}
else {
System.out.println("未查询到此人!");
}
}
public static int find(ArrayList<usre> list, String fid)
{
for (int i = 0; i < list.size(); i++) {
usre uu=list.get(i);
if(uu.getId().equals(fid))
{
return i;
}
}
return -1;
}
public static class usre{
private String id;
private String username;
private String password;
public usre() {
}
public usre(String id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
}