欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

Java中的ArrayList数据结构,javaarraylist

来源: javaer 分享于  点击 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);
    }
}

输出结果

 

相关文章

    暂无相关文章

用户点评