Java中的ArrayList数据结构,javaarraylist
分享于 点击 41603 次 点评:287
Java中的ArrayList数据结构,javaarraylist
ArrayList可以理解成为Java的动态数组,因为Java数组没有办法去动态地扩展,所以有了ArrayList。他可以方便的提供插入,删除,清除,查找操作,并且支持像数组那样的索引查找(随机访问特性),ArrayList的随机访特性是 name.get(索引)。这与数组不一样。
声明方法是
ArrayList<E> name=new ArrayList<E>();
java 7后声明可以简化为
ArrayList<E> name=new ArrayList<>();
其中的E指的是元素(类名,例如String),值得注意的是,E不可以是int,boolean,char,double 这四种基本类型。这时需要用到Java的装箱和拆箱机制,由于隐藏了细节,所以也不过多了解。总之声明一个int类型的ArrayList时,ArrayList<Integer>name=new ArratList<>();
Interger是一种包装类,它把int包装起来了。
Java的装箱和拆箱机制几乎是正确的,但是会有例外,书上举了例子。因此慎用。
Compareable接口
有了Compareable接口,程序才可以使用Collection.sort()函数进行排序,也就是说在类的实现过程中需要实现CompareTo函数。具体栗子如下。
public class Data implements Comparable<Data> {
private int month;
private int day;
public Data(int month,int day )
{
this.month=month;
this.day=day;
}
public String toString()
{
return month+"/"+day;
}
public int compareTo(Data other){
if (this.month!=other.month)
{
return this.month-other.month;
}
else
{
return this.day-other.day;
}
}
}
无需另外声明compareable接口,我认为该接口是Java自带的。我们需要做的就是接入此接口即可,注意引入的格式,implement copareable<类名>。根据接口的规则,必须实现该接口中所有的方法。这个接口只有compareTo(对象)这么一种方法,返回值有 负数,0,正数三种情况。其中Java认为正数说明该对象比要比的那一个大。正数负数的绝对值不一定为1。
类中需要自行实现toString()方法,否则主函数输出会调用默认的输出方法,不是我们想要的。
主函数
import java.util.*;
public class Main {
public static void main(String[] args) {
ArrayList<Data>a=new ArrayList<>();
a.add(new Data(3,5));
a.add(new Data(5,1));
a.add(new Data(5,2));
a.add(new Data(2,6));
System.out.println(a);
Collections.sort(a);
System.out.println(a);
}
}
输出结果
相关文章
- 暂无相关文章
用户点评