先看List的继承关系图:
Collection
├List
│├LinkedList
│├ArrayList
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java JDK不能提供直接继承自Collection的类,Java JDK提供的类都是继承自Collection的"子接口",如:List和Set。
List特点:元素有放入顺序,元素可重复
List<E>([]内的内容可省略),与数组类似:
实例化:List[<数据类型>] list = new ArrayList[<数据类型>]();
获得集合内元素个数:list.size();
添加元素:
默认添加:list.add(e);
指定下标添加(添加后下标后的元素向后挪一位):list.add(index,e);
删除元素:
返回是否删除:list.remove(e);
直接删除指定下标的元素(只删除找到的第一个相符合的元素):list.remove(index);
替换元素(替换掉指定下标的元素):list.set(index,e);
取出元素:list.get(index);
清空集合:list.clear();
判断集合中是否存在某个元素(存在返回true,不存在返回false):list.contains(e);
对比两个集合中的所有元素:
两个对象一定相等:list.equals(list2);
两个对象不一定相等:list.hashCode() == list2.hashCode();
(两个相等对象的equals方法一定为true, 但两个hashcode相等的对象不一定是相等的对象。)
获得元素下标:
元素存在则返回找到的第一个元素的下标,不存在则返回-1:list.indexOf(e);
元素存在则返回找到的最后一个元素的下标,不存在则返回-1:list.lastIndexOf(e);
判断集合是否为空(空则返回true,非空则返回false):list.isEmpty();
返回Iterator集合对象:list.iterator();
将集合转换为字符串:list.toString();
截取集合(从fromIndex开始在toIndex前结束,[fromIndex,toIndex)):list.subList(fromIndex,toIndex);
将集合转换为数组:
默认类型:list.toArray();
指定类型(objects为指定类型的数组对象,并将转换好的数组赋值给objects数组):list.toArray(objects);
代码如下:
package com.wjy;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/*
* list实质上就是一个链表,当标号为n的节点被删除了之后,n之后的节点会依次向前递推补齐,
* 以前标号为n+1的节点变成了标号为n的节点。以此类推。
*/
public class ListTest {
public static void main(String[] args) {
List list=new ArrayList();
list.add(0,"hello");
list.add(1,"world");
/*
* 上述两句话等价于 list.add("hello");
* list.add("world");
* 上述两句话若是按下面这样写会出错,因为List是有顺序的
* list.add(1,"world");
* list.add(0,"hello");
*/
list.add(2,"my");
list.add(3,"friend");
list.remove(2); //按照下标删除第三个元素。
/*
* 以上这句话等价于
* list.remove("my");
*/
list.set(2,"master");
/*
* 将那个下标为3,值为“friend”的元素替换成"master".
* 注意一定不能写成
* list.add(3,"master");
* 因为“friend”在list中的位置因为“my”被删除而从3变成了2。
*/
System.out.println("Get string is: "+list.get(0));
/*
* 以上这句话等价于以下两句话String
* string=(String)list.get(0); //获得list中第一个元素
* System.out.println("Get string is: "+string);
*/
// list.clear(); //这句话可以清空列表中的所有数据。
String liststringString=list.toString();
System.out.println("To string is: "+liststringString);
Iterator it=list.listIterator();
while(it.hasNext()){
Object object=it.next();
System.out.println(object);
}
}
}
运行结果:
Get string is: hello
To string is: [hello, world, master]
hello
world
master