您的位置:首页 > 编程语言 > Java开发

JAVA类集----List接口

2012-07-28 13:02 267 查看
一、List接口:

List是Collection的子接口,里面可以保存各个重复的内容,此接口的定义如下:

public interface List<E> extends Collection<E>
二、List接口的常用子类----ArrayList

1.ArrayList是List子类,可以直接通过对象的多态性,为List接口实例化

2.此类的定义如下:

public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable
3.AbstractList类的定义如下:

public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>
import java.util.ArrayList;
import java.util.List;
import java.util.Collection;
public class ArrayListDemo{
public static void main(String[] args){
List<String> allList = new ArrayList<String>();
allList.add("hello");
allList.add("world");
System.out.println(allList);
Collection<String> allCollection = new ArrayList<String>();
allCollection.add("one");
allCollection.add("dream");
allList.addAll(allCollection);
System.out.println(allList);
allList.addAll(0, allCollection);
System.out.println(allList);
}
}

以上是插入数据的操作,下面是删除数据的操作:

import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo{
public static void main(String[] args){
List<String> allList = new ArrayList<String>();
allList.add("hello");
allList.add(0, "world");
allList.add("one");
allList.add("dream");
System.out.println(allList);
allList.remove(0);
System.out.println(allList);
allList.remove("hello");
System.out.println(allList);
}
}
集合中的内容可以添加、删除还有最重要的输出:

1.在List接口中提供了get()方法,利用此方法可以完成输出

2.通过循环完成输出,循环的次数由size()方法取得

import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo{
public static void main(String[] args){
List<String> allList = new ArrayList<String>();
allList.add("hello");
allList.add("hello");
allList.add(0, "world");
allList.add("one");
allList.add("dream");
System.out.print("List从前向后顺序输出为:");
for(int i = 0; i < allList.size(); i++){
System.out.print(allList.get(i) + "、");
}
System.out.print("\nList从后向前顺序输出为:");
for(int i = allList.size()-1; i >= 0; i--){
System.out.print(allList.get(i) + "、");
}
}
}

<T> T[] toArray(T[] a)

返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同

import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo{
public static void main(String[] args){
List<String> allList = new ArrayList<String>();
allList.add("hello");
allList.add("hello");
allList.add(0, "world");
allList.add("one");
allList.add("dream");
String[] str = allList.toArray(new String[]{});		//指定好类型
for(int i = 0; i < str.length; i++){
System.out.print(str[i] + "、");
}
}
}

Object[] toArray()

返回包含此 collection 中所有元素的数组。如果 collection 对其迭代器返回的元素顺序做出了某些保证,那么此方法必须以相同的顺序返回这些元素。

import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo{
public static void main(String[] args){
List<String> allList = new ArrayList<String>();
allList.add("hello");
allList.add("hello");
allList.add(0, "world");
allList.add("one");
allList.add("dream");
Object[] obj = allList.toArray();
for(int i = 0; i < obj.length; i++){
String temp = (String)obj[i];
System.out.print(temp + "、");
}
}
}
集合中还有一下几个操作:

1.判断集合是否为空:boolean isEmpty();

2.截取部分集合:List接口扩充

List<E> subList(int fromIndex, int toIndex)


3.查找指定的对象是否存在:
int indexOf(Object o)

4.查找是否存在:

boolean contains(Object o)

import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo{
public static void main(String[] args){
List<String> allList = new ArrayList<String>();
System.out.println("集合操作前是否为空:" + allList.isEmpty());
allList.add("hello");
allList.add("hello");
allList.add(0, "world");
allList.add("one");
allList.add("dream");
System.out.println(allList.contains("hello")?"\"hello\"字符串存在!" : "\"hello\"字符串不存在!");
List<String> subList = allList.subList(2, 3);	//字符串截取
System.out.println("字符截取:");
for(int i = 0; i < subList.size(); i++){
System.out.print(subList.get(i) + "、");
}
System.out.println("\none字符串的位置:" + allList.indexOf("one"));
System.out.println("集合操作后是否为空:" + allList.isEmpty());
}
}
三、挽救的子类:Vector

在List接口中还有一个子类:Vector,Vector类算是一个元老级的类。

public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable
import java.util.Vector;
import java.util.List;
public class ArrayListDemo{
public static void main(String[] args){
List<String> allList = new Vector<String>();
allList.add("hello");
allList.add("hello");
allList.add(0, "world");
allList.add("one");
allList.add("dream");
System.out.println(allList);
}
}
四、子类的差异:ArrayList与Vector的区别

比较点

ArrayList

Vector

推出时间

JDK1.2之后推出的,属于新的操作类

JDK1.0时推出,属于旧的操作类

性能

采用异步处理方式,性能更高

采用同步处理方式,性能较低

线程安全

属于非线程安全的操作类

属于线程安全的操作类

输出

只能使用Iterator、foreach输出

可以使用Iterator、foreach、Enumeration输出

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: