愿景:"让编程不再难学,让技术与生活更加有趣"
更多架构课程请访问 xdclass.net
目录
第3集 Java集合框架之Collections工具类讲解上集
第4集 Java集合框架之Collections工具类讲解下集
第5集 Java集合框架元素排序之Comparable排序接口讲解
第1集 Java集合框架遍历之迭代器(Iterator)
简介:讲解什么是迭代器
-
使用循环遍历集合
-
普通for循环
-
增强for循环
-
-
什么是迭代器Iterator
-
Iterator是java中的一个接口,核心作用就是用来遍历容器的元素,当容器实现了Iterator接口后,可以通过调用Iterator()方法获取一个 Iterator对象
-
为啥是调用容器里面的Iterator方法呢?
-
因为容器的实现有多种,不同的容器遍历规则不一样,比如ArrayList/LinkedList/HashSet/TreeSet等,所以设计了Iterator接口,让容器本身去实现这个接口,实现里面的方法,从而让开发人员不用关系容器的遍历机制,直接使用对应的方法即可
-
-
三个核心方法
-
boolean hashNext()
-
用于判断iterator内是否有下个元素,如果有则返回true,没有则false
-
-
Obejct next()
-
返回iterator的下一个元素,同时指针也会向后移动1位
-
-
void remove()
-
删除指针的上一个元素(容易出问题,删除元素不建议使用容器自己的方法迭代器遍历集合
-
-
-
-
-
public static void testSet(){ Set<String> set = new HashSet<>(); set.add("jack"); set.add("tom"); set.add("marry"); set.add("tony"); set.add("jack"); Iterator<String> iterator = set.iterator(); while (iterator.hasNext()){ String str = iterator.next(); System.out.println(str); } } public static void testList(){ List<String> list = new ArrayList<>(); list.add("jack"); list.add("tom"); list.add("mary"); list.add("tim"); list.add("tony"); list.add("eric"); list.add("jack"); Iterator<String> iterator = list.iterator(); while (iterator.hasNext()){ String str = iterator.next(); System.out.println(str); } }
第2集 Java迭代器进阶和注意事项
简介:详细讲解迭代器的进阶知识和注意事项
-
迭代器是一种设计模式
-
三个核心方法
- boolean hashNext() - 用于判断iterator内是否有下个元素,如果有则返回true,没有则false - Obejct next() - 返回iterator的下一个元素,同时指针也会向后移动1位 - void remove() - 删除指针的上一个元素 - 只有当next执行完后,才能调用remove函数 - 如要删除第一个元素,不能直接调用 remove(),要先next一下()否则调用remove方法是会抛出异常的
-
迭代器遍历元素时不能通过Collection接口中的remove方法删除元素,只能用Iterator的remove方法删除元素; 原因 某个线程在 Collection 上进行迭代时,不允许另一个线程修改该 Collection
public static void testList(){
List<String> list = new ArrayList<>();
list.add("jack");
list.add("tom");
list.add("mary");
list.add("tim");
list.add("tony");
list.add("eric");
list.add("jack");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){
String str = iterator.next();
if("jack".equals(str)){
list.remove(str);//ConcurrentModificationException并发修改异常
}
System.out.println(str);
}
}
-
迭代出的对象是引用的拷贝,如果修改迭代中的元素,那么就是修改容器对象的本身
-
和for循环对比
-
for循环适合顺序访问,或者通过下标进行访问的
-
迭代器适合链式结构
-
最终看使用场景,性能会有轻微差别,但是可以忽略
-
第3集 Java集合框架之Collections工具类讲解上集
简介:讲解Java集合工具类Collections讲解上集
-
Collections工具类
-
Java里关于集合的工具类,包含有各种有关集合操作的静态多态方法,不能实例化(把构造函数私有化)
-
public class Collections { // Suppresses default constructor, ensuring non-instantiability. private Collections() { }
-
-
-
和Collection的区别
-
Collection是接口,提供了对集合对象进行基本操作的通用接口方法,List、Set等多种具体的实现类
-
Collections是工具类,专门操作Collection接口实现类里面的元素
-
-
常见方法
-
排序 sort(List list)
-
按自然排序的升序排序
List<String> list = new ArrayList<>(); list.add("aaaa"); list.add("zzz"); list.add("gggg"); System.out.println(list); Collections.sort(list); System.out.println(list);
- <
-
-