Java ArrayList
ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。
ArrayList 类位于 java.util 包中,使用前需要引入它,语法格式如下:
import java.util.ArrayList; // 引入 ArrayList 类
ArrayList<E> objectName =new ArrayList<>(); // 初始化
//E: 泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型。
//objectName: 对象名。
功能
1.添加元素
ArrayList 类提供了很多有用的方法,添加元素到 ArrayList 可以使用 add() 方法:
ArrayList<String> name=new ArrayList<>();
name.add("link");
name.add("tom");
name.add("lucy");
System.out.println(name);
结果
[link, tom, lucy]
2.访问元素
访问 ArrayList 中的元素可以使用 get() 方法:
String temp=name.get(1); //访问name的第二个元素
System.out.println(temp);
结果
tom
注意:数组的索引值从 0 开始。
3.修改元素
如果要修改 ArrayList 中的元素可以使用 set() 方法:
//修改元素
name.set(2, "bobo");
System.out.println(name);
结果
[link, tom, bobo]
4.删除元素
如果要删除 ArrayList 中的元素可以使用 remove() 方法:
//删除元素
name.remove(2);
System.out.println(name);
5.计算大小
如果要计算 ArrayList 中的元素数量可以使用 size() 方法:
//计算大小
int size=name.size();
System.out.println("size of name:"+size);
6.迭代数组列表
我们可以使用 for 来迭代数组列表中的元素:
//迭代数组列表
for (int i=0;i<name.size();i++)
{
System.out.println(name.get(i));
}
7.排序
Collections 类也是一个非常有用对类,位于 java.util 包中,提供的 sort() 方法可以对字符或数字列表进行排序。
以下实例对字母进行排序:
//排序
Collections.sort(name); //按字母顺序排序
for (int i=0;i<name.size();i++)
{
System.out.println(name.get(i));
}
以下实例对数字进行排序:
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);
}
另一种排序
ArrayList.sort(),需要传入一个Compator作为比较器,由调用者来规定谁前谁后。
1.需要自己写一个类,引用Comparaor
//第二种排序方法
public static class MyComparator implements Comparator<name>
{
@Override
public int compare(name o1, name o2) {
// TODO 自动生成的方法存根
//compare的返回值,决定谁在前面
//返回-1,则o1在前,返回1贼o2在前
//返回0,表示o1 o2相等,应该也是o1在前
if(o1.id>o2.id)
return -1;
if(o2.id>o1.id)
return 1;
return 0;
//第二种排序
name n1=new name(123,"link");
name n2=new name(456,"tom");
ArrayList<name> Arrayname=new ArrayList<>();
Arrayname.add(n1);
Arrayname.add(n2);
//System.out.println(Arrayname.get(1));
class MyComparator implements Comparator<name>
{
@Override
public int compare(name o1, name o2) {
// TODO 自动生成的方法存根
//compare的返回值,决定谁在前面
//返回-1,则o1在前,返回1贼o2在前
//返回0,表示o1 o2相等,应该也是o1在前
if(o1.id>o2.id)//id大的在前
return -1;
if(o2.id>o1.id)
return 1;
return 0;
}
}
System.out.println("排序前:");
for (int i=0;i<Arrayname.size();i++)
{
System.out.println(Arrayname.get(i));
}
Arrayname.sort(new MyComparator());
System.out.println("排序后:");
for (int i=0;i<Arrayname.size();i++)
{
System.out.println(Arrayname.get(i));
}
结果
排序前:
name [id=123, name=link]
name [id=456, name=tom]
排序后:
name [id=456, name=tom]
name [id=123, name=link]