接口三
Iterator接口
Iterator为了统一江湖, 从此出现了
所有实现了Collection接口的容器都有一个iterator方法, 用来返回一个实现了Iterator接口的对象
Iterator对象称作迭代器, 用来方便的实现对容器内的元素的遍历
Iterator里面的三个方法:
hasNext()
next(), 重点注意: 这个方法每调用一次, 游标就往下走一个
remove(), 尽量不要与父类的方法混着用
for循环遍历, 1.5以后才出现的for(Objetc o : array) {}
有优点有缺点
(拓展思维)思考一个问题: 任何继承了Iterator接口的都要实现它的方法, ArrayList等实现类也实现了这个接口, 为什么API没有这个方法
Set接口
没有顺序, 但是不可以重复
Comparable接口, Collections类
Collections的常用算法:
sort(List); 顺序排序
如果需要对自定义的类进行排序, 那就必须要让其实现Comparable接口, 实现比较两个类大小的方法
shuffle(List); 随机排列
void reverse(List); 逆序排列(Linked效率较高)
copy(复制完集合,需要复制的原集合); 复制集合, 前提是size()相同(长度, 和容量的区别)
fill(List, Object);使用某个对象填充整个List
binarySearch();(二分搜索法)
自动打包/解包(自动拆箱/装箱)
自动将基础类型转换为对象(装箱) Integer i=5;
自动将对想转换为基础数据类型(拆箱) int h=5; Integer hh=h;
泛型(Generic)(1.5之后才有泛型)
1, 装入集合的类型都被当作Object对待, 从而失去了自己的实际类型
2, 集合中秋出来的时候需要转型, 效率低, 易出错
好处: 增强程序的可读性和稳定性
import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class Text1 { public static void main(String[] args){ /* List list = new ArrayList(); list.add("qqq"); list.add("www"); list.add("eee"); list.add("rrr"); list.add("ttt"); for(int i=0;i<list.size();i++){ System.out.println(list.get(i)); } for(Object s:list){ System.out.println(s); } //Iterator iter = list.iterator(); while(iter.hasNext()){ System.out.println(iter.next()); } */ Map map=new HashMap(); map.put(1,"qqq"); map.put(2,"www"); map.put(3,"eee"); map.put(4,"rrr"); map.put(5,"ttt"); Set set=map.keySet(); for(Object o:set){ System.out.println(map.get(o)); } Iterator iter2 = set.iterator(); while(iter2.hasNext()) { System.out.println(map.get(iter2.next())); } System.out.println("----------------------------"); Collection c = map.values(); Iterator iter3 = c.iterator(); while(iter3.hasNext()) { System.out.println(iter3.next()); } } }
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Text2 { @SuppressWarnings("unchecked") public static void main(String[] args) { // TODO Auto-generated method stub // List list = new ArrayList(); // list.add("qqqq"); // list.add("aaaa"); // list.add("xxxx"); // list.add("cccc"); //System.out.println(list); // 顺序排列 //Collections.sort(list); // 随机排列 //Collections.shuffle(list); //逆序排列 //Collections.reverse(list); //System.out.println(list); List list2 = new ArrayList(); for(int i=1;i<=10;i++) { list2.add(i); } int k = (Integer)list2.get(4); // Collections.sort(list2); // int a = Collections.binarySearch(list2, 8); // System.out.println(a); // Collections.copy(list2, list); // Collections.fill(list2, new Person()); // System.out.println(list2); // 拆箱 Integer a = 5; int b = a.intValue(); // 装箱 int c = 5; Integer i = new Integer(c); // 自动装箱, 拆箱 Integer i2 = 8; int h = 3; Integer hh = h; } } class Person { }