集合
集合是java中提供的一种容器,可以用来存储多个数据。而且集合的长度是可变的。集合中存储的元素必须是引用类型数据(ArrayList)
ArrayList类发现它继承了抽象类AbstractList同时实现接口List,而List接口又继承了Collection接口。Collection接口为最顶层集合接口
List接口允许重复的有序排列,Set接口不允许重复并且是无序排列
Collection基本用法
public class Demo { public static void main(String[] args) { Collection<String> col = new ArrayList<String>(); col.add("你好"); col.add("双十一"); col.add("买买买"); Object obj = col.remove("1"); //移除col集合中的1并返回一个布尔值 System.out.println(obj); System.out.println(col.contains("双十一")); //如果col包含此元素,返回一个布尔值 ArrayList<String> list = (ArrayList<String>) col; //向下转型 for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } } }
Object[] obj1 = col.toArray();//返回一个数组 for (int i = 0; i < obj1.length; i++) { System.out.println(obj1[i]); }
往集合中添加对象元素。add方法,创建集合时所指定的数据类型如<String>,那么,添加的是String类型;创建集合时若没有指定数据类型,那么,Object类型。
public static void main(String[] args) { //Collection也可以不写范型 Collection col = new ArrayList(); col.add("abc"); col.add(123); col.add(12.3); //ArrayList 也可以不写范型 ArrayList list = (ArrayList)col; for(int i = 0;i < list.size();i++){ if(list.get(i) instanceof String){ System.out.println(list.get(i)); } if(list.get(i) instanceof Integer){ System.out.println(list.get(i)); } } }
Iterator迭代器
在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就再取出出来。一直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代。
public static void main(String[] args) { // 迭代器 Collection<String>col = new ArrayList<String>(); col.add("123"); col.add("abc"); Iterator<String>it = col.iterator(); System.out.println(it.hasNext()); System.out.println(it.next()); System.out.println(it.hasNext()); System.out.println(it.next()); System.out.println(it.hasNext()); }
集合元素的向下转型
public static void method03() { Collection col = new ArrayList(); col.add(new Person("熊大",22)); col.add("111"); col.add(23456); Iterator it = col.iterator(); while(it.hasNext()) { Object obj = it.next();///当需要使用子类对象特有方法时,需要向下转型, 否则报错 if(it.next() instanceof String) {//“111” String s = (String)it.next();//是23456 System.out.println(s.length()); } } }