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功能