List接口
掌握List接口与collection接口关系。
掌握List接口常用子类:ArrayList,Vector
掌握ArrayList和Vector类区别。
List是collection接口子类,里面可以存放各个重复数据。定义如下:
public interface List<E> extends Collection<E>
List扩展方法:
List接口比collection强大很多,因为大量扩充了Collection方法。
如果要使用接口,则肯定要使用对象的多态性进行实例化操作,那么对于 List接口本身也是一样。
ArrayList是List最常用子类。
实例操作1,向集合增加元素。
package 类集; import java.util.Collection; import java.util.ArrayList ; import java.util.List ; public class test1{ public static void main(String args[]){ List<String> allList = null ; Collection<String> allCollection = null ; allList = new ArrayList<String>() ; // 指定操作的泛型为String allCollection = new ArrayList<String>() ; // 指定一个集合 allList.add("Hello") ; // 此方法由Collection接口而来 allList.add(0,"World") ; // 在第一个位置上添加新的内容 System.out.println(allList) ; allCollection.add("LXH") ; // 向Collection中加入内容 allCollection.add("www.mldn.cn") ; allList.addAll(allCollection) ;//向allList加入allCollection内容 allList.addAll(0,allCollection) ;//向allList开头加入allCollection内容 System.out.println(allList) ; System.out.println(allCollection) ; } };
删除操作:
remove(index)删除指定位置内容
remove(element) 删除指定内容
package 类集; import java.util.ArrayList ; import java.util.List ; public class test1{ public static void main(String args[]){ List<String> allList = null ; allList = new ArrayList<String>() ; // 指定操作的泛型为String allList.add("Hello") ; // 此方法由Collection接口而来 allList.add(0,"World") ; // 在第一个位置上添加新的内容 allList.add("MLDN") ; // 向Collection中加入内容 allList.add("www.mldn.cn") ; allList.remove(0) ; // 删除第一个元素,指定删除的位置 System.out.println(allList) ;//移除第一位后的内容 allList.remove("Hello") ; // 此方法由Collection接口继承而来 System.out.println(allList) ; } };
结果:
[Hello, MLDN, www.mldn.cn]
[MLDN, www.mldn.cn]
集合可以增加,删除,实际最重要的是输出操作。
在List中提供了get()方法,此方法可以完成输出。
通常通过循环完成输出。但是循环通常是通过List提供的size()方法获取循环大小。
例子如下:
package 类集; import java.util.ArrayList ; import java.util.List ; public class test1{ public static void main(String args[]){ List<String> allList = null ; allList = new ArrayList<String>() ; // 指定操作的泛型为String allList.add("Hello") ; // 此方法由Collection接口而来 allList.add("Hello") ; // 此方法由Collection接口而来 allList.add(0,"World") ; // 在第一个位置上添加新的内容 allList.add("MLDN") ; // 向Collection中加入内容 allList.add("www.mldn.cn") ; 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、Hello、MLDN、www.mldn.cn、
由后向前输出:www.mldn.cn、MLDN、Hello、Hello、World、
将集合转换成数组对象,ToArray。
1,指定好数组类型,toArray(T[] a):括号里面是一个数组类型对象
例子
List<String> allList = new ArrayList<String>() ;
allList.add("Hello") ;
String str[] = allList.toArray(new String[]{}) ; // 指定好类型
输出的时候,直接使用数组:
System.out.print(str[i] + "、") ;
2,返回object对象类型,toArray();
例子:
List<String> allList = new ArrayList<String>() ;
allList.add("Hello") ;
Object obj [] = allList.toArray() ; // 返回Object类型
但是,输出的时候需要进行向下转型。
String temp = (String)obj[i] ; // 进行向下转型
System.out.print(temp + "、") ;
实例:
package 类集; import java.util.ArrayList ; import java.util.List ; public class test1{ public static void main(String args[]){ List<String> allList = null ; allList = new ArrayList<String>() ; // 指定操作的泛型为String allList.add("Hello") ; // 此方法由Collection接口而来 allList.add(0,"World") ; // 在第一个位置上添加新的内容 allList.add("MLDN") ; // 向Collection中加入内容 allList.add("www.mldn.cn") ; 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() ; // 返回Object类型 for(int i=0;i<obj.length;i++){ String temp = (String)obj[i] ; // 进行向下转型 System.out.print(temp + "、") ; } } };
输出结果:
指定数组类型:World、Hello、MLDN、www.mldn.cn、
返回对象数组:World、Hello、MLDN、www.mldn.cn、
其他操作:
判断集合是否为空:bool IsEmpty();
截取部分集合:List <E> subList( int fromindex,int endindex)
查找指定对象是否存在 :int indexOf(Object o),如果查找到,返回位置,否则返回-1.
查找是否存在:bool Contains(Object o)。如果存在返回true,否则false。
实例:
package 类集; import java.util.ArrayList ; import java.util.List ; public class test1{ public static void main(String args[]){ List<String> allList = null ; allList = new ArrayList<String>() ; // 指定操作的泛型为String System.out.println("集合操作前是否为空?" + allList.isEmpty()) ; allList.add("Hello") ; // 此方法由Collection接口而来 allList.add(0,"World") ; // 在第一个位置上添加新的内容 allList.add("MLDN") ; // 向Collection中加入内容 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.print(allSub.get(i) + "、") ; } System.out.println("MLDN字符串的位置:" + allList.indexOf("MLDN")) ; System.out.println("集合操作后是否为空?" + allList.isEmpty()) ; } };
输出结果:
集合操作前是否为空?true "Hello"字符串存在! 集合截取: MLDN、MLDN字符串的位置:2 集合操作后是否为空?false
Vector类继承List类,其操作差不多。
package 类集; import java.util.List ; import java.util.Vector; public class test1{ public static void main(String args[]){ List<String> allList = null ; allList = new Vector<String>() ; // 指定操作的泛型为String allList.add("Hello") ; // 此方法由Collection接口而来 allList.add("Hello") ; // 此方法由Collection接口而来 allList.add(0,"World") ; // 在第一个位置上添加新的内容 allList.add("MLDN") ; // 向Collection中加入内容 allList.add("www.mldn.cn") ; for(int i=0;i<allList.size();i++){ System.out.print(allList.get(i) + "、") ; } } };
返回结果:
World、Hello、Hello、MLDN、www.mldn.cn、