【Java类集】_List接口笔记(实例亲测)
2013-01-23 15:01
495 查看
【Java类集】_List接口笔记
本章目标:
掌握List接口与Collection接口的关系
掌握List接口的常用子类:ArrayList、Vector
掌握ArrayList与Vector类的区别
3.具体内容
List是Collection的子接口,List接口可以存放任意数据,而且List接口的内容是允许重复的。
List接口的功能要比Collection接口强大很多,因为大量的扩充了Collection接口的操作。
List接口扩充的方法:
No. 方法 类型 描述
1 public void add(int index,E element) 普通 在指定位置增加元素
2 public boolean addAll(int index,Collection<? extends E?> c) 普通 在指定位置增加一组元素
3 E get(int index) 普通 返回指定位置的元素
4 public int indexOf(Object o) 普通 查找指定元素的位置
5 public int lastIndexOf(Object o) 普通 从后向前查找指定元素的位置
6 public ListIterator<E> listIterator() 普通 为ListIterator接口实例化
7 public E remove(in index) 普通 按指定的位置删除元素
8 public List<E> subList(int fromIndex,int toIndex) 普通 取出集合中的子集合
9 public E set(int index,E element) 普通 替换指定位置的元素
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>
如果想要使用接口,则肯定要使用对象的多态性进行实例化的操作,那么对于List接口本身也是一样的 。
ArrayList的是List中最常用的子类。
输出:[Hello, World]
指定位置添加,添加的方法是List接口扩充的方法。
输出:
[World, Hello]
[World, Hello, LXH, www.mldn.cn]
在指定位置上加入一组数据
输出:
[World, Hello]
[LXH, www.mldn.cn, World, Hello, LXH, www.mldn.cn]
既然可以增加数据,那么就可以删除数据
List中存在两种删除:根据对象内容、根据对象的编号
输出:
[Hello, www.mldn.cn]
集合中的内容可以添加,可以删除,那么实际上最重要的就是输出。
在List接口中提供了get()方法,利用此方法就可以完成输出。
通过循环完成输出,循环的次数由size()方法取得。
输出:
由前向后输出
HelloHelloWorldMLDN
由后向前输出
MLDNWorldHelloHello
此输出方式是List接口所独有的,而其它接口是没有的,尤其是Collection中是没有根据索引取出内容的操作。
输出:
预先指定好数据类型
HelloWorld!MLDN
返回对象数组类型
HelloWorld!MLDN
既然已经完成基本的输出的功能,集合中还有以下几个操作:
判断集合是否为空:boolean isEmpty()
截取部分集合:List<E> subList(int fromIndex,int toIndex),List接口扩充
查找指定对象是否存在:int indexOf(Object o),如果查找到则返回位置,否则返回-1
查找是否存在:boolean contains(Object o)
输出:
集合操作之前先判断集合是否为空?true
"Hello"字符串存在!
集合截取:
MLDN、
MLDN字符串的位置:2
集合操作之后集合是否为空?false
以上的操作都是使用ArrayList子类完成的。
挽救的子类Vector
考虑到大部分的人已经习惯了使用Vector类,所以J***A的设计者,就让Vector类多实现了一个List接口,这才将其保存下来。但是因为其是List子类,所以Vector类的使用之ArrayList没有太大区别
Vector定义格式:
public class Vector<E> extends AbstratList<E> implements List<E>, RanddomAccess,Cloneable,Serializable
但是,虽然Vector类是旧的类,但是因为让其实现了List的接口,所以对于程序来讲是一样的。
输出:
Hello、
World、
在此类中也提供了重复的方法:
public void addElement(E obj)此方法与add()方法是一致的。
子类的差异:ArrayList与VectorList的区别
No. 比较点 ArrayList VectorList
1 推出时间 JDK1.2之后推出的,属于新的操作类 JDK1.0时推出的,属于旧的操作类
2 性能 采用异步处理方式,性能更高 采用同步处理方式,性能较低
3 线程安全 属于非线程安全操作类 属于线程安全操作类
4 输出 只能使用Iterator、 foreach输出 可以使用Iterator、foreach、Enumeration输出
本章目标:
掌握List接口与Collection接口的关系
掌握List接口的常用子类:ArrayList、Vector
掌握ArrayList与Vector类的区别
3.具体内容
List是Collection的子接口,List接口可以存放任意数据,而且List接口的内容是允许重复的。
List接口的功能要比Collection接口强大很多,因为大量的扩充了Collection接口的操作。
List接口扩充的方法:
No. 方法 类型 描述
1 public void add(int index,E element) 普通 在指定位置增加元素
2 public boolean addAll(int index,Collection<? extends E?> c) 普通 在指定位置增加一组元素
3 E get(int index) 普通 返回指定位置的元素
4 public int indexOf(Object o) 普通 查找指定元素的位置
5 public int lastIndexOf(Object o) 普通 从后向前查找指定元素的位置
6 public ListIterator<E> listIterator() 普通 为ListIterator接口实例化
7 public E remove(in index) 普通 按指定的位置删除元素
8 public List<E> subList(int fromIndex,int toIndex) 普通 取出集合中的子集合
9 public E set(int index,E element) 普通 替换指定位置的元素
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>
如果想要使用接口,则肯定要使用对象的多态性进行实例化的操作,那么对于List接口本身也是一样的 。
ArrayList的是List中最常用的子类。
import java.util.ArrayList; import java.util.List; public class ArrayListDemo01{ public static void main(String args[]){ List<String> allList = null; allList = new ArrayList<String>(); allList.add("Hello"); allList.add("World"); System.out.println(allList); } }
输出:[Hello, World]
指定位置添加,添加的方法是List接口扩充的方法。
import java.util.ArrayList; import java.util.List; import java.util.Collection; public class ArrayListDemo01{ public static void main(String[] args){ List<String> allList = null; Collection<String> allCollection = null; allList = new ArrayList<String>(); allCollection = new ArrayList<String>(); allList.add("Hello"); allList.add(0,"World"); System.out.println(allList); allCollection.add("LXH"); allCollection.add("www.mldn.cn"); allList.addAll(allCollection); System.out.println(allList); } }
输出:
[World, Hello]
[World, Hello, LXH, www.mldn.cn]
在指定位置上加入一组数据
import java.util.ArrayList; import java.util.List; import java.util.Collection; public class ArrayListDemo01{ public static void main(String[] args){ List<String> allList = null; Collection<String> allCollection = null; allList = new ArrayList<String>(); allCollection = new ArrayList<String>(); allList.add("Hello"); allList.add(0,"World"); System.out.println(allList); allCollection.add("LXH"); allCollection.add("www.mldn.cn"); allList.addAll(allCollection); allList.addAll(0,allCollection); System.out.println(allList); } }
输出:
[World, Hello]
[LXH, www.mldn.cn, World, Hello, LXH, www.mldn.cn]
既然可以增加数据,那么就可以删除数据
List中存在两种删除:根据对象内容、根据对象的编号
import java.util.ArrayList; import java.util.List; public class ArrayListDemo02{ public static void main(String args[]){ List<String> allList = null; allList = new ArrayList<String>(); allList.add("Hello"); allList.add(0,"World"); allList.add("MLDN"); allList.add("www.mldn.cn"); allList.remove(0); allList.remove("MLDN"); System.out.println(allList); } }
输出:
[Hello, www.mldn.cn]
集合中的内容可以添加,可以删除,那么实际上最重要的就是输出。
在List接口中提供了get()方法,利用此方法就可以完成输出。
通过循环完成输出,循环的次数由size()方法取得。
import java.util.ArrayList; import java.util.List; public class ArrayListDemo03{ public static void main(String[] args){ List<String> allList = null; allList = new ArrayList<String>(); allList.add("Hello"); allList.add("World"); allList.add(0,"Hello"); allList.add("MLDN"); System.out.println("由前向后输出"); for(int i=0;i<allList.size();i++){ System.out.print(allList.get(i)); } System.out.println("\n由后向前输出"); for(int i=allList.size()-1;i>=0;i--){ System.out.print(allList.get(i)); } } }
输出:
由前向后输出
HelloHelloWorldMLDN
由后向前输出
MLDNWorldHelloHello
此输出方式是List接口所独有的,而其它接口是没有的,尤其是Collection中是没有根据索引取出内容的操作。
import java.util.ArrayList; import java.util.List; public class ArrayListDemo04{ public static void main(String args[]){ List<String> allList = null; allList = new ArrayList<String>(); allList.add("Hello"); allList.add("World!"); allList.add("MLDN"); String str[] = allList.toArray(new String[]{}); //指定好类型 System.out.println("预先指定好数据类型"); for(int i=0;i<allList.size();i++){ System.out.print(allList.get(i)); } System.out.println("\n返回对象数组类型"); Object obj[] = allList.toArray(); for(int i=0;i<allList.size();i++){ System.out.print((String)allList.get(i));//向下转型操作 } } }
输出:
预先指定好数据类型
HelloWorld!MLDN
返回对象数组类型
HelloWorld!MLDN
既然已经完成基本的输出的功能,集合中还有以下几个操作:
判断集合是否为空:boolean isEmpty()
截取部分集合:List<E> subList(int fromIndex,int toIndex),List接口扩充
查找指定对象是否存在:int indexOf(Object o),如果查找到则返回位置,否则返回-1
查找是否存在:boolean contains(Object o)
import java.util.ArrayList; import java.util.List; public class ArrayListDemo05{ public static void main(String args[]){ List<String> allList = null; allList = new ArrayList<String>(); System.out.println("集合操作之前先判断集合是否为空?"+allList.isEmpty()); allList.add("Hello"); allList.add("World"); allList.add("MLDN"); allList.add("www.mldn.cn"); System.out.println(allList.contains("Hello")?"\"Hello\"字符串存在!":"\"Hello\"字符串不存在!"); List<String> allSub = allList.subList(2,3); //字符串截取 System.out.println("集合截取:"); for(int i=0;i<allSub.size();i++){ System.out.println(allSub.get(i)+"、"); } System.out.println("MLDN字符串的位置:"+allList.indexOf("MLDN")); System.out.println("集合操作之后集合是否为空?"+allList.isEmpty()); } }
输出:
集合操作之前先判断集合是否为空?true
"Hello"字符串存在!
集合截取:
MLDN、
MLDN字符串的位置:2
集合操作之后集合是否为空?false
以上的操作都是使用ArrayList子类完成的。
挽救的子类Vector
考虑到大部分的人已经习惯了使用Vector类,所以J***A的设计者,就让Vector类多实现了一个List接口,这才将其保存下来。但是因为其是List子类,所以Vector类的使用之ArrayList没有太大区别
Vector定义格式:
public class Vector<E> extends AbstratList<E> implements List<E>, RanddomAccess,Cloneable,Serializable
但是,虽然Vector类是旧的类,但是因为让其实现了List的接口,所以对于程序来讲是一样的。
import java.util.Vector; import java.util.List; public class VectorListDemo01{ public static void main(String args[]){ List<String> allList = null; allList = new ArrayList<String>(); allList.add("Hello"); allList.add("World"); for(int i=0;i<allSub.size();i++){ System.out.println(allSub.get(i)+"、"); } } }
输出:
Hello、
World、
在此类中也提供了重复的方法:
public void addElement(E obj)此方法与add()方法是一致的。
import java.util.Vector; import java.util.List; public class VectorListDemo02{ public static void main(String args[]){ Vector<String> allList = null; allList = new Vector<String>(); allList.addElement("Hello"); allList.addElement("World"); for(int i=0;i<allList.size();i++){ System.out.println(allList.get(i)+"、"); } } }
子类的差异:ArrayList与VectorList的区别
No. 比较点 ArrayList VectorList
1 推出时间 JDK1.2之后推出的,属于新的操作类 JDK1.0时推出的,属于旧的操作类
2 性能 采用异步处理方式,性能更高 采用同步处理方式,性能较低
3 线程安全 属于非线程安全操作类 属于线程安全操作类
4 输出 只能使用Iterator、 foreach输出 可以使用Iterator、foreach、Enumeration输出
相关文章推荐
- 【Java类集】_List接口笔记(实例亲测)
- 【Java类集】_SortedSet接口笔记(实例亲测)
- 【Java类集】_ListIterator接口笔记(实例亲测)
- 【Java类集】_Iterator接口笔记(实例亲测)
- 13. Java类集 Part 1(类集、Collection接口、List接口、Set接口、SortedSet接口、集合的输出) ----- 学习笔记
- 【Java类集】_LinkedList类笔记(实例亲测)
- 【Java类集】_Set接口笔记(实例亲测)
- 【Java类集】_Set接口笔记(实例亲测)
- 【Java类集】_SortedSet接口笔记(实例亲测)
- 【Java类集】_foreach及Enumeration接口笔记(实例亲测)
- 【Java类集】_ListIterator接口笔记(实例亲测)
- 【Java类集】_Iterator接口笔记(实例亲测)
- 【Java类集】_foreach及Enumeration接口笔记(实例亲测)
- 【Java类集】_LinkedList类笔记(实例亲测)
- Java精选笔记_集合【List(列表)接口】
- Java Collections Framework学习笔记之List接口
- 【Java类集】_Map接口笔记(实例亲测)
- JAVA笔记19-容器之三 Set接口、List接口、Collections类、Comparable接口(重要)
- 【Java笔记】set接口的实现实例和解释
- java笔记三:List接口