JAVA List用法
1.List中可以添加任何对象,包括自己定义的类。
//定义一个Person类
class Person{
……
}
Person person1 = new Person();
Person person2 = new Person();
List list = new ArrayList();
//添加对象
list.add(person1);
list.add(person2);
//取对象
Person person3 = (Person)list.get(0);//注意:这里一定要强制类型转换,因为List中取出的对象都是Object类型的。
2.List是一个接口,不能实例化,需要实例化一个ArrayList或者LinkedList
List myList = new ArrayList();
3.使用myList.add(任何对象);可以添加任何对象
4.取值的时候myList.get(索引);取出来的值都是Object,使用时需要类型转换。
5.可以用Iterator迭代器对List中的元素进行迭代操作。
List集合中的对象按照一定的顺序存放,里面的内容可以重复。
List接口实现的类:ArrayList(实现动态数组)、Vector(实现动态数组)、LinkedList(实现链表)、Stack(实现堆栈)。
1.java.util.ArrayList类
java.util.ArrayList类实现一个可增长的动态数组,平时用得最多的就是add()方法。使用该方法向集合内添加对象,并且这些对象按照一定的顺序排列,内部原理是数组实现的,因此处理数据量很大时,不建议使用。
List a = new ArrayList();
a.add("a");
a.add("b");
a.add("c");
//使用Iterator迭代器遍历出集合的元素并打印
for(Iterator i = a.iterator();i.hasNext();)
{
String str = (String)i.next();
System.out.printIn(str);
}
2.java.util.Vector(向量)类
java.util.Vector类与ArrayList类似的也是实现一个动态数组,该向量可以随意的增长以及存放等多的对象。
List a = new Vector();
a.add("a");
a.add("b");
a.add("c");
for(Iterator i = a.iterator();i.hasNext();)
{
String str = (String)i.next();
System.out.printIn(str);
}
3.java.util.LinkedList类实现链表
可以初始化为空或者已经存在的集合,通常使用以下方法:
add();向链表末尾添加对象
addFirst();在链表开头添加对象
addLast();在链表末尾添加对象--这个和add()一样getFirst();得到链表开头的对象
getLast();得到链表末尾的对象
注意:该类提供了随机访问列表中的元素的方法.
LinkedList a = new LinkedList();
a.add("a");
a.add("b");
a.add("c");
for(Iterator i = a.iterator();i.hasNext();)
{
String str = (String)i.next();
System.out.printIn(str);
}
4. java.util.Stack类实现了堆栈数据结构,即按照先进后出的原则存放数据,创建时只能为空,使用push()方法进行添加对象。
Stack a = new Stack();
a.push("a");
a.push("b");
a.push("c");
for(Iterator i = a.iterator();i.hasNext();)
{
String str = (String)i.next();
System.out.printIn(str);
}
java list用法示例详解
List:元素是有序的(怎么存的就怎么取,顺序不会乱),元素可以重复。
ArrayList:底层的数据结构使用的是数组结构,特点是查询很快,但增删较慢,线程不同步。
LinkedList:底层的数据结构是链表结构,特点是查询慢,增删较快。
Vector:底层是数组数据结构,线程同步,无论查询还是增删都很慢,被ArrayList替代了
ArrayList删除指定位置的元素
ArrayList a = new ArrayList();
a.add("javaScript");
a.add("php");
a.add("flash");
//删除第2个位置的元素
a.remove(1);
ArrayList修改指定角标的元素 set(int index,E element),返回的是修改的那个元素
a.set(2,"C++");
ArrayList查找指定位置的元素
get(int index) 返回列表中指定位置的元素
subList(int fromIndex,int toIndex) 返回列表中指定的fromIndex(包括)和toIndex(不包括)之间的部分元素
System.out.println(a.get(2)); //获取指定角标的元素,可以用该方法遍历集合中所有的元素。
System.out.println(a.subList(1,3)); // 获得集合中某一部分的元素,包含头不包含尾
java迭代器的使用
ListIterator li = a.listIterator();
while(li.hasNext())
{
if(li.next().equals("C++")) // 这句是java里面的字符串比
li.set("C#");
}