Iterator
iterator是为了实现对Java容器(collection)进行遍历功能的一个接口。
在iterator实现了Iterator接口后,相当于把一个Collection容器的所有对象,做成一个线性表(List),而iterator本身是一个指针,开始时位于第一个元素之前。
方法 | 说明 |
---|---|
hasNext() | 判断 iterator 内是否存在下1个元素,如果存在,返回true,否则返回false。(注意,这时上面的那个指针位置不变) |
next() | 返回 iterator 内下1个元素,同时上面的指针向后移动一位。如果不断地循环执行next()方法,就可以遍历容器内所有的元素了 |
remove() | 删除 iterator 内指针的前1个元素,前提是至少执行过1次next() |
遍历1个ArrayList 和Linklist是十分容易的,遍历1个Tree容器也不难,但是实现机制是完全不同,而遍历1个Set容器就无从下手了。
Iterator 这个接口让各种容器自己去重写里面的hasNext()和next()方法。 不用关心各种容器的遍历机制,只要使用Iterator,会让人觉得各种容器的遍历方法都是一样的,这就是Java接口的重要意义。
HashMap zsInfo = new HashMap<>();
zsInfo.put("name", "张三");
zsInfo.put("height", "173CM");
zsInfo.put("sex", "男性");
zsInfo.put("skin-color", "白色");
zsInfo.put("height", "183CM");
zsInfo.remove("skin-color");
System.out.println("Iterator 循环------------------");
Iterator iterator = zsInfo.entrySet().iterator();
while( iterator.hasNext() ) {
Map.Entry next = (Entry) iterator.next();
System.out.println( next );
}
Collections
Collections 是 Java 提供对Set 、List 和Map 等集合操作的工具类。
该工具类里提供了大量方法,除了对集合元素进行排序、查询和修改等操作;还提供了将集合对象设置为不可变、对集合对象实现同步控制等方法。
排序
ArrayList nums = new ArrayList<>();
nums.add(2);
nums.add(0);
nums.add(-5);
nums.add(0);
nums.add(3);
System.out.println( nums );
Collections.reverse( nums );
System.out.println( nums);
Collections.sort( nums );
System.out.println( nums );
Collections.shuffle( nums );
System.out.println( nums );
查找
ArrayList nums = new ArrayList<>();
nums.add(2);
nums.add(0);
nums.add(-5);
nums.add(0);
nums.add(3);
System.out.println( nums );
System.out.println( Collections.max( nums ));
System.out.println( Collections.min( nums ));
Collections.replaceAll(nums, 0 , 1);
System.out.println( nums );
System.out.println( Collections.frequency(nums, 1));
Collections.sort(nums);
System.out.println( nums );
System.out.println( Collections.binarySearch(nums, 3 ));