List接口ArrayList

来源:互联网 发布:免费 刻录软件 编辑:程序博客网 时间:2024/05/23 00:05

List是个接口,ArrayList是List接口的实现类


List接口是Collection接口的子接口,List有一个重要的实现类--ArrayList类,List中的元素是有序排列的而且可重复,所以被称为是序列。

List可以精确的控制每个元素的插入位置,或删除某个位置元素,它的实现类ArrayList底层是由数组实现的。

1、掌握 List 接口与Collection 接口的关系

2、掌握 List 接口的常用子类:ArrayList 、Vector

3、掌握 ArrayList 与 Vector 类的区别

具体内容

Collection 下分为很多的子接口,其中有一个 List 接口, List 接口中可以存放任意的数据。 而且在 List 接口中内容是允许重复的。

List 接口的功能要比 Collection 接口强大很多,因为大量的扩充了 Collection 接口的操作。



如果要想使用接口,则肯定要使用对象的多态性进行实例化的操作,那么对于 List 接口本身也是一样的。

ArrayList 是List 中最常用的子类。

[java] view plain copy
  1. import java.util.ArrayList ;  
  2. import java.util.List ;  
  3. import java.util.Collection ;  
  4. public class ArrayListDemo01{  
  5.     public static void main(String args[]){  
  6.         List<String> allList = null ;  
  7.         allList = new ArrayList<String>() ;   // 指定操作的泛型为String  
  8.         allList.add("Hello") ;  // 此方法由Collection接口而来  
  9.         allList.add(0,"World") ;    // 在第一个位置上添加新的内容  
  10.         System.out.println(allList) ;  
  11.     }  
  12. };  
指定位置添加,添加的方法是 List接口扩充的方法。
[java] view plain copy
  1. import java.util.ArrayList ;  
  2. import java.util.List ;  
  3. import java.util.Collection ;  
  4. public class ArrayListDemo01{  
  5.     public static void main(String args[]){  
  6.         List<String> allList = null ;  
  7.         Collection<String> allCollection = null ;  
  8.         allList = new ArrayList<String>() ;   // 指定操作的泛型为String  
  9.         allCollection = new ArrayList<String>() ; // 指定一个集合  
  10.         allList.add("Hello") ;  // 此方法由Collection接口而来  
  11.         allList.add(0,"World") ;    // 在第一个位置上添加新的内容  
  12.         System.out.println(allList) ;  
  13.         allCollection.add("LXH") ;  // 向Collection中加入内容  
  14.         allCollection.add("www.mldn.cn") ;  
  15.         allList.addAll(allCollection) ;  
  16.         System.out.println(allList) ;  
  17.     }  
  18. };  
在指定位置上加入一组数据
[java] view plain copy
  1. import java.util.ArrayList ;  
  2. import java.util.List ;  
  3. import java.util.Collection ;  
  4. public class ArrayListDemo01{  
  5.     public static void main(String args[]){  
  6.         List<String> allList = null ;  
  7.         Collection<String> allCollection = null ;  
  8.         allList = new ArrayList<String>() ;   // 指定操作的泛型为String  
  9.         allCollection = new ArrayList<String>() ; // 指定一个集合  
  10.         allList.add("Hello") ;  // 此方法由Collection接口而来  
  11.         allList.add(0,"World") ;    // 在第一个位置上添加新的内容  
  12.         System.out.println(allList) ;  
  13.         allCollection.add("LXH") ;  // 向Collection中加入内容  
  14.         allCollection.add("www.mldn.cn") ;  
  15.         allList.addAll(allCollection) ;  
  16.         allList.addAll(0,allCollection) ;//指定位置上加入一组数据  
  17.         System.out.println(allList) ;  
  18.     }  
  19. };  
既然可以增加数据,那么就可以删除数据:

List 中存在两种删除:根据对象内容、根据对象的编号

[java] view plain copy
  1. import java.util.ArrayList ;  
  2. import java.util.List ;  
  3. public class ArrayListDemo02{  
  4.     public static void main(String args[]){  
  5.         List<String> allList = null ;  
  6.         allList = new ArrayList<String>() ;   // 指定操作的泛型为String  
  7.         allList.add("Hello") ;  // 此方法由Collection接口而来  
  8.         allList.add(0,"World") ;    // 在第一个位置上添加新的内容  
  9.         allList.add("MLDN") ;   // 向Collection中加入内容  
  10.         allList.add("www.mldn.cn") ;  
  11.         allList.remove(0) ; // 删除第一个元素,指定删除的位置  
  12.         allList.remove("Hello") ;   // 此方法由Collection接口继承而来  
  13.         System.out.println(allList) ;  
  14.     }  
  15. };  
集合中的内容可以添加,可以删除,那么实际上最重要的就是输出。

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

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

[java] view plain copy
  1. import java.util.ArrayList ;  
  2. import java.util.List ;  
  3. public class ArrayListDemo03{  
  4.     public static void main(String args[]){  
  5.         List<String> allList = null ;  
  6.         allList = new ArrayList<String>() ;   // 指定操作的泛型为String  
  7.         allList.add("Hello") ;  // 此方法由Collection接口而来  
  8.         allList.add("Hello") ;  // 此方法由Collection接口而来  
  9.         allList.add(0,"World") ;    // 在第一个位置上添加新的内容  
  10.         allList.add("MLDN") ;   // 向Collection中加入内容  
  11.         allList.add("www.mldn.cn") ;  
  12.         System.out.print("由前向后输出:") ;  
  13.         for(int i=0;i<allList.size();i++){  
  14.             System.out.print(allList.get(i) + "、") ;  
  15.         }  
  16.         System.out.print("\n由后向前输出:") ;  
  17.         for(int i=allList.size()-1;i>=0;i--){  
  18.             System.out.print(allList.get(i) + "、") ;  
  19.         }  
  20.     }  
  21. };  
此输出方式是 List 接口所独有的,而其他接口是没有的,尤其是 Collection 中是没有根据索引取出内容的操作。

[java] view plain copy
  1. import java.util.ArrayList ;  
  2. import java.util.List ;  
  3. public class ArrayListDemo04{  
  4.     public static void main(String args[]){  
  5.         List<String> allList = null ;  
  6.         allList = new ArrayList<String>() ;   // 指定操作的泛型为String  
  7.         allList.add("Hello") ;  // 此方法由Collection接口而来  
  8.         allList.add(0,"World") ;    // 在第一个位置上添加新的内容  
  9.         allList.add("MLDN") ;   // 向Collection中加入内容  
  10.         allList.add("www.mldn.cn") ;  
  11.         String str[] = allList.toArray(new String[]{}) ;    // 指定好类型  
  12.         System.out.print("指定数组类型:") ;  
  13.         for(int i=0;i<str.length;i++){  
  14.             System.out.print(str[i] + "、") ;  
  15.         }  
  16.         System.out.print("\n返回对象数组:") ;  
  17.         Object obj [] = allList.toArray() ; // 返回Object类型  
  18.         for(int i=0;i<obj.length;i++){  
  19.             String temp = (String)obj[i] ;  // 进行向下转型  
  20.             System.out.print(temp + "、") ;  
  21.         }  
  22.     }  
  23. };  
既然已经完成基本的输出的功能,集合中还有以下的几个操作:

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

截取部分集合:List<E> subList(int fromIndex, int toIndex)    ,List 接口扩充

查找指定的对象是否存在:int indexOf(Object o),如果查找到则返回位置,否则返回 -1

查找是否存在:boolean contains(Object o)

[java] view plain copy
  1. import java.util.ArrayList ;  
  2. import java.util.List ;  
  3. public class ArrayListDemo05{  
  4.     public static void main(String args[]){  
  5.         List<String> allList = null ;  
  6.         allList = new ArrayList<String>() ;   // 指定操作的泛型为String  
  7.         System.out.println("集合操作前是否为空?" + allList.isEmpty()) ;  
  8.         allList.add("Hello") ;  // 此方法由Collection接口而来  
  9.         allList.add(0,"World") ;    // 在第一个位置上添加新的内容  
  10.         allList.add("MLDN") ;   // 向Collection中加入内容  
  11.         allList.add("www.mldn.cn") ;  
  12.         System.out.println(allList.contains("Hello")?"\"Hello\"字符串存在!" : "\"Hello\"字符串不存在!") ;  
  13.         List<String> allSub = allList.subList(2,3) ;  // 字符串截取  
  14.         System.out.println("集合截取:") ;  
  15.         for(int i=0;i<allSub.size();i++){  
  16.             System.out.print(allSub.get(i) + "、") ;  
  17.         }  
  18.         System.out.println("MLDN字符串的位置:" + allList.indexOf("MLDN")) ;  
  19.         System.out.println("集合操作后是否为空?" + allList.isEmpty()) ;  
  20.     }  
  21. };  
以上的操作都是使用ArrayList 子类完成的。

但是,虽然Vector 类的是旧的为,但是因为让其实现了 List 的接口,所以对于程序来讲是一样的。

[java] view plain copy
  1. import java.util.Vector ;  
  2. import java.util.List ;  
  3. public class VectorDemo01{  
  4.     public static void main(String args[]){  
  5.         List<String> allList = null ;  
  6.         allList = new Vector<String>() ;  // 指定操作的泛型为String  
  7.         allList.add("Hello") ;  // 此方法由Collection接口而来  
  8.         allList.add("Hello") ;  // 此方法由Collection接口而来  
  9.         allList.add(0,"World") ;    // 在第一个位置上添加新的内容  
  10.         allList.add("MLDN") ;   // 向Collection中加入内容  
  11.         allList.add("www.mldn.cn") ;  
  12.         for(int i=0;i<allList.size();i++){  
  13.             System.out.print(allList.get(i) + "、") ;  
  14.         }  
  15.     }  
  16. };  
因为Vector 类本身属于旧的类,所以在类中也香袋了很多重复的方法。

增加元素:pbulic void addElement(E obj) -->此方法是最早的增加元素的操作,之后此方法的功能与add() 方法一致的。

[java] view plain copy
  1. import java.util.Vector ;  
  2. import java.util.List ;  
  3. public class VectorDemo02{  
  4.     public static void main(String args[]){  
  5.         Vector<String> allList = null ;  
  6.         allList = new Vector<String>() ;  // 指定操作的泛型为String  
  7.         allList.addElement("Hello") ;   // 此方法由Collection接口而来  
  8.         allList.addElement("MLDN") ;    // 向Collection中加入内容  
  9.         allList.addElement("www.mldn.cn") ;  
  10.         for(int i=0;i<allList.size();i++){  
  11.             System.out.print(allList.get(i) + "、") ;  
  12.         }  
  13.     }  
  14. };  


总结:

1、掌握了以上的操作方法,实际上List 接口的作用就明白了,而且之后的全部类集操作中也基本上都是以这些方法为操作的标准,只是各个的特性不一样,例如:List 中允许有重复元素。

2、ArrayList 和 Vector 类的区别


0 0
原创粉丝点击