Java集合类之List

137 阅读2分钟

List<>接口,属于java.util包,继承自Collection<>接口。LinkedList类实现了List接口,因此我们可以把LinkedList当成List来用。ArrayList类也实现了List接口。

int size();
boolean isEmpty();
void clear();

//给List末尾添加元素
boolean add(E e);
//在List特定位置添加元素
void add(int index, E element);

//如果List包含该元素则返回true
boolean contains(Object o);

//返回特定位置的元素
E get(int index);
//删除特定位置的元素
E remove(int index);

//比较对象是否和该List一样(是否都是List,长度和元素类型都相同,对应元素也相同)
boolean equals(Object o);

//返回List的[fromindex, toIndex)区间
List<E> subList(int fromIndex, int toIndex);

//返回一个包含List所有元素的Object数组
Object[] toArray();
//返回指定类型的数组
T[] toArray(T[] a);

一般调用java排序方法会使用Arrays类中的静态方法sort()。调用类的静态方法不需要实例。该方法可以排序数组以及各种可以排序的数据结构。

Arrays.sort(nums);
//自定义排序方法
//待排序对象:int[] intervals,按区间左端点升序排序
Arrays.sort(intervals, new Comparator<int[]>() {
    public int compare(int[] a, int[] b){
        return a[0]-b[0];
    }
});
//待排序对象:int[],按照首先按照第一个元素的升序排列,第一个元素值相同时按照第二个元素的降序排列。
Arrays.sort(people, new Comparator<int[]>() {
            public int compare(int[] person1, int[] person2) {
                if (person1[0] != person2[0]) {
                    return person1[0] - person2[0];
                } else {
                    return person2[1] - person1[1];
                }
            }
        });

ArrayList类:ArrayList类继承了AbstractList类,实现了List、RandomAccess、Cloneable、Serializable接口。 ArrayList是Java Collection框架中的一个类,它是作为动态数组引入的。由于数组本质上是静态的,即一旦创建后就无法更改数组的大小,因此,如果需要一个可以调整自身大小的数组,则应使用ArrayList。 ArrayList类和LinkedList类之间的联系类似于数组和链表之间的关系,查找操作用ArrayList类快,插入删除操作用LinkedList类快。

void sort(Comparator c);  //Comparator排序方式
//o1,o2相等返回0
//o1大于o2返回一个正整数如1
//o1小于o2返回一个负整数如-1
int compare(T o1, T o2){  //一个升序排序方式,这里和c++相反
    if(o1>o2) return 1;
    else if(o1==o2) return 0;
    else return -1;
}

ArrayList类的构造函数

public ArrayList(Collection<? extends E> c) //用一个集合对象作为构造函数的参数
/*Constructs a list containing the elements of the specified collection, in the order they are returned by the collection's iterator.*/

使用LinkedList类实现栈:

void addLast(E e)  //添加指定的元素到该list的末尾,实现栈的push功能
E removeLast()  //将该list末尾的元素移除并返回,实现栈的pop功能