`
chaoyi
  • 浏览: 311052 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

List接口

 
阅读更多

本章目标
掌握List接口与Collection接口的关系
掌握List接口的常用子类:ArrayList、Vector
掌握ArrayList与Vector类的区别

List接口
List是Collection的子接口,里面可以保存各个重复的内容,此接口的定义如下:
——public interface List<E> extends Collection<E>

 

List接口的扩展方法

 

List接口的常用子类 —— ArrayList
ArrayList是List子类,可以直接通过对象的多态性,为List接口实例化
此类的定义如下:
——public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable
AbstractList类的定义如下:
——public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>

 

实例操作一:向集合中增加元素

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class ArrayListDemo01 {
	public static void main(String[] args) {
		List<String> allList = null;//定义 List 对象
		Collection<String> allCollection = null;//定义 Collection 对象
		allList = new ArrayList<String>();//实例化 List 对象,只能是 String 类型
		allCollection = new ArrayList<String>();//实例化 Collection 对象,只能是 String 类型
		allList.add("Hello");//从 Collection 继承的方法
		allList.add(0,"World");//此方法为 List 扩充的方法
		System.out.println(allList);//输出集合中的内容
		allCollection.add("chaoyi");//增加数据
		allCollection.add("阅谁问君诵,水落清香浮。");//增加数据
		allList.addAll(allCollection);//从 Collection 继承的方法,增加一组对象
		allList.addAll(0,allCollection);//此方法是 List 自定义的,增加一组对象
		System.out.println(allList);//输出对象,调用 toString() 方法
	}
/* 结果:
 * [World, Hello]
 * [chaoyi, 阅谁问君诵,水落清香浮。, World, Hello, chaoyi, 阅谁问君诵,水落清香浮。]
 * */
}

 

实例操作二:删除元素

import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo02 {
	public static void main(String[] args) {
		List<String> allList = null;//定义 List 对象
		allList = new ArrayList<String>();//实例化 List 对象,只能是 String 类型
		allList.add("Hello");//增加元素
		allList.add(0,"World");//此方法为 List 扩展的增加方法
		allList.add("阅谁问君诵,水落清香浮");//增加元素
		allList.add("chaoyi");//增加元素
		allList.remove(0);//删除指定位置的元素
		allList.remove("Hello");//删除指定位置的元素
		System.out.println(allList);//输出对象,调用 toString() 方法
	}
/* 结果:
 * [阅谁问君诵,水落清香浮, chaoyi]
 * */
}

 

实例操作三:输出List中的内容

import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo03 {
	public static void main(String[] args) {
		List<String> allList = null;//定义 List 对象
		allList = new ArrayList<String>();//实例化 List 对象,只能是 String 类型
		allList.add("Hello");//增加元素
		allList.add(0,"World");//增加元素
		allList.add("阅谁问君诵,水落清香浮");//增加元素
		allList.add("chaoyi");//增加元素
		System.out.print("由前向后输出:");//信息输出
		for(int i=0; i<allList.size(); i++){//循环输出集合内容
			System.out.print(allList.get(i)+"、");//通过下标取得集合中的元素
		}
		System.out.print("\n由后向前输出:");
		for(int i=allList.size()-1; i>=0; i --){//循环输出集合内容
			System.out.print(allList.get(i)+"、");//通过下标取得集合中的元素
		}
	}
/* 结果:
 * 由前向后输出:World、Hello、阅谁问君诵,水落清香浮、chaoyi、
 * 由后向前输出:chaoyi、阅谁问君诵,水落清香浮、Hello、World、
 * */
}

 

实例操作四:将集合变为对象数组

import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo04 {
	public static void main(String[] args) {
		List<String> allList = null;//定义 List 对象
		allList = new ArrayList<String>();//实例化 List 对象,只能是 String 类型
		allList.add("Hello");//增加元素
		allList.add(0,"World");//增加元素
		allList.add("阅谁问君诵,水落清香浮");//增加元素
		allList.add("chaoyi");//增加元素
		String str[] = allList.toArray(new String[]{});//指定的泛型类型
		System.out.print("指定数组类型:");//信息输出
		for(int i=0; i<str.length; i++){//输出字符串数组中的内容
			System.out.print(str[i]+"、");//输出每一个元素
		}
		System.out.print("\n返回数组对象:");//信息输出
		Object obj[] = allList.toArray();//直接返回对象数组
		for(int i=0; i<obj.length; i++){//循环输出对象数组内容
			String temp = (String)obj[i];//第一个对象都是 String 类型实例
			System.out.print(temp + "、");//输出每一个元素
		}
	}
/* 结果:
 * 指定数组类型:World、Hello、阅谁问君诵,水落清香浮、chaoyi、
 * 返回数组对象:World、Hello、阅谁问君诵,水落清香浮、chaoyi、
 * */
}

 

实例操作五:集合的其他相关操作

import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo05 {
	public static void main(String[] args) {
		List<String> allList = null;//定义 List 对象
		allList = new ArrayList<String>();//实例化 List 对象,只能是 String 类型
		System.out.println("集合操作前是否为空?"+allList.isEmpty());
		allList.add("Hello");//增加元素
		allList.add(0,"World");//增加元素
		allList.add("阅谁问君诵,水落清香浮");//增加元素
		allList.add("chaoyi");//增加元素
		System.out.println(allList.contains("Hello")?"\"Hello\" 字符串存在!":"\"Hello\" 字符串不存在!");
		//取出里面的部分集合
		List<String> allSub = allList.subList(2, 4);
		System.out.print("集合截取:");
		for(int i=0; i<allSub.size(); i++){//截取部分集合
			System.out.print(allSub.get(i)+"、");
		}
		System.out.println("\nWorld 字符串的位置:"+allList.indexOf("Hello"));
		System.out.println("集合操作后是否为空?"+allList.isEmpty());
	}
/* 结果:
 * 集合操作前是否为空?true
 * "Hello" 字符串存在!
 * 集合截取:阅谁问君诵,水落清香浮、chaoyi、
 * World 字符串的位置:1
 * 集合操作后是否为空?false
 * */
}

 

挽救的子类:Vector
在List接口中还有一个子类:Vector,Vector类属于一个挽救的子类,从整个JAVA的集合发展历史来看,Vector算是一个元老级的类,在JDK 1.0的时候就已经存在类此类。但是到了JAVA 2(JDK 1.2)之后重点强调了集合框架的概念,所以先后定义了很多的新接口(如:List等),但是考虑到一大部分的人已经习惯了使用Vector类,所以JAVA的设计者,就让Vector类多实现了一个List接口,这才将其保留下来。但是因为其是List子类,所以Vector类的使用与之前的并没有太大的区别。
Vector类的定义:
——public class Vector<E> extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, Serializable

 

Vector子类

import java.util.List;
import java.util.Vector;
public class VectorDemo01 {
	public static void main(String[] args) {
		List<String> allList = null;//定义 List 对象
		allList = new Vector<String>();//实例化 List 对象,只能是 String 类型
		allList.add("Hello");//增加元素
		allList.add(0,"World");//增加元素
		allList.add("阅谁问君诵,水落清香浮");//增加元素
		allList.add("chaoyi");//增加元素
		for(int i=0; i<allList.size(); i++){//循环输出
			System.out.print(allList.get(i)+"、");//通过get()取出每一个元素
		}
	}
/* 结果:
 * World、Hello、阅谁问君诵,水落清香浮、chaoyi、
 * */
}

 

使用旧的方法

import java.util.Vector;
public class VectorDemo02 {
	public static void main(String[] args) {
		Vector<String> allList = new Vector<String>();;//实例化 Vector 对象
		allList.add("Hello");//此方法为 Vector 自己定义
		allList.add(0,"World");//此方法为 Vector 自己定义
		allList.add("阅谁问君诵,水落清香浮");//此方法为 Vector 自己定义
		allList.add("chaoyi");//此方法为 Vector 自己定义
		for(int i=0; i<allList.size(); i++){//循环输出
			System.out.print(allList.get(i)+"、");//通过get()取出每一个元素
		}
	}
/* 结果:
 * World、Hello、阅谁问君诵,水落清香浮、chaoyi、
 * */
}

 
子类的差异:ArrayList与Vector的区别

 

 

 

  • 大小: 58.3 KB
  • 大小: 30.3 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics