1、集合
(1)集合存储的元素必须是引用类型数据[自动装箱(基本类型—>包装类)]jdk1.5版本之后
建立一个 demo01 类
package com.oracle.demo01; public class demo01 { private String name; private Integer age; public demo01() { super(); } public demo01(String name, Integer age) { super(); this.name = name; this.age = age; } public String toString() { return "demo01 [name=" + name + ", age=" + age + "]"; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
建立一个 demo02 测试类
package com.oracle.demo01; import java.util.ArrayList; public class demo02 { public static void main(String[] args) { ArrayList<demo01> list = new ArrayList<demo01>(); list.add(new demo01("熊大",20)); //这里的20、19、30虽然是int基本类型,但是由于自动装箱的缘故,是Integer引用数据类型 list.add(new demo01("熊二",19)); list.add(new demo01("琪琪国王",30)); //遍历 for(int i = 0;i < list.size();i++){ System.out.println(list.get(i)); } } }
(2)collection接口的基本方法:
contains(Object o):boolean;toArray():Object[](数组);
package com.oracle.demo01; import java.util.ArrayList; import java.util.Collection; public class demo03 { public static void main(String[] args) { Collection<String> col = new ArrayList<String>(); col.add("你好"); col.add("双十一"); col.add("买买买"); //移除 /*col.remove("你好");*/ //是否包含 返回布尔值 System.out.println(col.contains("双十一"));
//清除 /*col.clear();
//遍历得到的是一个空集合 ArrayList<String> list = (ArrayList<String>)col; for(int i = 0; i < list.size();i++){ System.out.println(list.get(i)); }*/ //返回一个数组 Object[] obj = col.toArray(); for(int i = 0;i < obj.length;i++){ System.out.println(obj[i]); } } }
效果如下:
(3)Collection变量名= new ArrayList();不指定范型;
集合的元素类型默认为Object类型,即任何类型的元素都可以存储。
使用时注意判断、向下转型;
举个例子:
package com.oracle.demo01; import java.util.ArrayList; import java.util.Collection; public class demo05 { public static void main(String[] args) { //Collection也可以不写范型 Collection col = new ArrayList(); //默认Object 什么类型都可以存 但是会出现警告 col.add("123"); 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)); } } } }
效果如下:
2、Iterator迭代器
(1)Collection集合元素的通用获取方式:
在取元素之前先要判断集合中有没有元素,
如果有,就把这个元素取出来,
继续在判断,如果还有就再取出出来。
一直把集合中的所有元素全部取出。
这种取出方式专业术语称为迭代。
(2)获取迭代器 iterator():Iterator<E>;
(3)判断集合中有没有元素:hasNext():boolean;
(4)把这个元素取出来:next():E;
举个例子:
package com.oracle.demo01; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class demo04 { public static void main(String[] args) { //迭代器 Collection<String> col = new ArrayList<String>(); col.add("abc"); col.add("deg"); //获取迭代器对象 Iterator<String> it = col.iterator(); System.out.println(it.hasNext()); System.out.println(it.next()); System.out.println("..."); System.out.println(it.hasNext()); System.out.println(it.next()); System.out.println("..."); System.out.println(it.hasNext()); System.out.println(it.next()); } }
效果如下:
可以运用while循环将代码优化成如下:
package com.oracle.demo01; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class demo04 { public static void main(String[] args) { //迭代器 Collection<String> col = new ArrayList<String>(); col.add("abc"); col.add("deg"); //获取迭代器对象 Iterator<String> it = col.iterator(); while(it.hasNext()){ System.out.println(it.next()); } } }
效果如下: