Connection接口下存在很多子接口,List接口是其中之一,List接口中可以存放任意的数据,而且在List接口中,内容是可以重复的。
public interface List<E> extends Connection<E>
如果要使用接口,肯定要实现对象多态性的实例化操作。
List接口的常用子类——ArrayList
ArrayList是List接口的子类,可以直接通过对象多态性,为List接口实例化
ArrayList类定义如下:
public class ArrayList<E> extends AbstractList<>implements
List<E>
AbstractList类定义如下
public abstract class AbstractList<E> extends AbstractionCollecntion<E>implements List<E>
import java.util.List ;
import java.util.ArrayList ;
public class ArrayListDemo01
{
public static void main(String[] args)
{
List<String> allList = null ; //声明ArrayList对象
allList = new ArrayList<String>() ;//实例化对象 指定操作泛型是String类型
allList.add("Hello") ; //add方法有Collection接口而来
allList.add("World") ; //默认情况 向最后加入
System.out.println(allList) ;
}
}
在指定位置上添加,添加的方法是List接口扩充的方法。
import java.util.List ;
import java.util.ArrayList ;
public class ArrayListDemo01
{
public static void main(String[] args)
{
ArrayList<String> allList = null ; //声明ArrayList对象
allList = new ArrayList<String>() ;//实例化对象 指定操作泛型是String类型
allList.add("Hello") ; //add方法有Collection接口而来
allList.add(0,"World") ; //在第一个位置上添加新的内容
System.out.println(allList) ;
}
}
在集合中增加数据
import java.util.List ;
import java.util.ArrayList ;
import java.util.Collection ;
public class ArrayListDemo01
{
public static void main(String[] args)
{
List<String> allList = null ; //声明ArrayList对象
allList = new ArrayList<String>() ; //实例化对象 指定操作泛型是String类型
Collection<String> allCon = null ; //声明Collection对象
allCon = new ArrayList<String>() ; // 指定一个集合
allList.add("Hello") ; //add方法有Collection接口而来
allList.add(0,"World") ; //在第一个位置上添加新的内容
System.out.println(allList) ;
allCon.add("IronMan") ; //向Collection中添加内容
allCon.add("SpiderMan") ; //向Collection中添加内容
allList.addAll(allCon) ; //把一组内容向集合中加
System.out.println(allList) ;
allCon.add("SuperMan") ; //向Collection中添加内容
allList.addAll(0,allCon) ; //把一组内容在指定位置添加
System.out.println(allList) ;
}
}
既然能增加数据,也可以删除数据
List中存在两种删除:根据对象内容,根据对象编号。
import java.util.List ;
import java.util.ArrayList ;
import java.util.Collection ;
public class ArrayListDemo02
{
public static void main(String[] args)
{
List<String> allList = null ; //声明ArrayList对象
allList = new ArrayList<String>() ; //实例化对象 指定操作泛型是String类型
Collection<String> allCon = null ; //声明Collection对象
allCon = new ArrayList<String>() ; // 指定一个集合
allList.add("Hello") ; //add方法有Collection接口而来
allList.add(0,"World") ; //在第一个位置上添加新的内容
allList.add("IronMan") ; //向Collection中添加内容
allList.add("SpiderMan") ; //向Collection中添加内容
allList.remove(0) ; //删除指定位置内容
allList.remove("IronMan") ;
System.out.println(allList) ;
}
}
集合中内容可以添加和删除,实际上最重要的是 输出
·在List接口中提供了get()方法,利用此方法可以完成输出;
·通过循环进行输出,循环的次数有size()方法取得
import java.util.List ;
import java.util.ArrayList ;
import java.util.Collection ;
public class ArrayListDemo03
{
public static void main(String[] args)
{
List<String> allList = null ; //声明ArrayList对象
allList = new ArrayList<String>() ; //实例化对象 指定操作泛型是String类型
Collection<String> allCon = null ; //声明Collection对象
allCon = new ArrayList<String>() ; // 指定一个集合
allList.add("Hello") ; //add方法有Collection接口而来
allList.add("World") ; //在第一个位置上添加新的内容
allList.add("IronMan") ; //向Collection中添加内容
allList.add("SpiderMan") ; //向Collection中添加内容
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)+",") ;
}
}
}
此输出方式是List()接口独有的,其他接口没有,尤其是Collection中没有根据索引取出内容的操作。
import java.util.List ;
import java.util.ArrayList ;
import java.util.Collection ;
public class ArrayListDemo04
{
public static void main(String[] args)
{
List<String> allList = null ; //声明ArrayList对象
allList = new ArrayList<String>() ; //实例化对象 指定操作泛型是String类型
Collection<String> allCon = null ; //声明Collection对象
allCon = new ArrayList<String>() ; // 指定一个集合
allList.add("Hello") ; //add方法有Collection接口而来
allList.add("World") ; //在第一个位置上添加新的内容
allList.add("IronMan") ; //向Collection中添加内容
allList.add("SpiderMan") ; //向Collection中添加内容
String str[] = allList.toArray(new String[]{}) ; //指定好类型
System.out.println("指定数组类型: ") ;
for(int i=0;i<str.length;i++)
{
System.out.print(str[i]+",") ;
}
System.out.println("返回对象数组") ;
Object obj [] = allList.toArray() ; //返回Object类型
for(int i=0;i<obj.length;i++)
{
String temp =(String)obj[i] ; //进行向下转型
System.out.println(temp+",") ;
}
}
}
集合中还有几个操作
1,判断集合是否为空 boolean isEmpty() ;
2 , 截取部分集合:List<E>subList(int fromIndex,toIndex)
, List接口扩充
3 , 查找指定的对象是否存在:int indexOf(Object o)
如果查找到,则返回位置,否则返回-1
4 , 查找指定的对象是否存在 : boolean contains(Object o)
如果查找到 返回true 否则返回false
import java.util.List ;
import java.util.ArrayList ;
public class ArrayListDemo05
{
public static void main(String[] args)
{
List<String> allList = null ; //声明ArrayList对象
allList = new ArrayList<String>() ; //实例化对象 指定操作泛型是String类型
System.out.println("集合操作前是否为空:" + allList.isEmpty()) ;
allList.add("Hello") ; //add方法有Collection接口而来
allList.add("World") ; //在第一个位置上添加新的内容
allList.add("IronMan") ; //向Collection中添加内容
allList.add("SpiderMan") ; //向Collection中添加内容
//判断某一内容是否存在
System.out.println(allList.contains("Hello")?"\"Hello\"":"不存在") ;
//字符串截取
List<String>allSub = allList.subList(2,3) ; //声明并实例化subList对象
System.out.println("集合截取") ;
for(int i=0;i<allSub.size();i++)
{
System.out.println(allSub.get(i)+",") ;
}
//判断某一内容是否存在 若存在 返回位置
System.out.println("World的位置"+allList.indexOf("World")) ;
System.out.println("集合操作后是否为空:"+ allList.isEmpty()) ;
}
}