Collection集合
-
Collection集合常用功能
-
执行路口
package cn.xiaoge.day13.demo01; /* java.util.Collection接口 所有单列集合的最顶层的接口, 里边定义了所有单列集合共性的方法 任意的单列集合都可以使用Collection接口中的方法 共性的方法: public boolean add(E e): 把给定的对象添加到当前集合中 。 public void clear():清空集合中所有的元素。 public boolean remove(E e): 把给定的对象在当前集合中删除。 public boolean contains(E e): 判断当前集合中是否包含给定的对象。 public boolean isEmpty(): 判断当前集合是否为空。 public int size(): 返回集合中元素的个数。 public Object[] toArray(): 把集合中的元素,存储到数组中。 */ import java.util.ArrayList; import java.util.Collection; public class Demo01Collection { public static void main(String[] args) { // 创建一个集合对象, 可以使用多态 Collection<String> coll = new ArrayList<>(); System.out.println(coll); // 重写了toString方法 [] /* public boolean add(E e): 把给定的对象添加到当前集合中。 返回值是一个布尔值, 一般都返回true */ boolean b1 = coll.add("张三"); System.out.println("b1: " + b1); // b1: true System.out.println(coll); // [张三] coll.add("李四"); coll.add("王五"); coll.add("赵六"); coll.add("田七"); System.out.println(coll); // [张三, 李四, 王五, 赵六, 田七] System.out.println("================================"); /* public boolean remove(E e): 把给定的对象在当前集合中删除。 返回值是一个boolean值, 集合中存在元素, 删除元素, 返回true 集合中不存在元素, 删除失败, 返回false */ boolean b2 = coll.remove("赵六"); System.out.println("b2: " + b2); // b2: true System.out.println(coll); // [张三, 李四, 王五, 田七] boolean b3 = coll.remove("赵四"); System.out.println("b3: " + b3); // b3: false System.out.println(coll); // [张三, 李四, 王五, 田七] System.out.println("================================"); /* public boolean contains(E e): 判断当前集合中是否包含给定的对象。 包含返回true 不包含返回false */ boolean b4 = coll.contains("李四"); System.out.println("b4: " + b4); // b4: true boolean b5 = coll.contains("赵四"); System.out.println("b5: " + b5); // b5: false System.out.println("================================"); /* public boolean isEmpty(): 判断当前集合是否为空。 集合为空返回true, 集合不为空返回false */ boolean b6 = coll.isEmpty(); System.out.println("b6: " + b6); // b6: false System.out.println("================================"); /* public int size(): 返回集合中元素的个数。 */ int count = coll.size(); System.out.println("count: " + count); // count: 4 System.out.println("================================"); /* public Object[] toArray(): 把集合中的元素,存储到数组中。 */ Object[] arr = coll.toArray(); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); // 张三 李四 王五 田七 } System.out.println(""); System.out.println("================================"); /* public void clear():清空集合中所有的元素。 但是不删除集合, 集合还在 */ coll.clear(); System.out.println(coll); // [] System.out.println(coll.isEmpty()); // true } } // 运行结果 [] b1: true [张三] [张三, 李四, 王五, 赵六, 田七] ================================ b2: true [张三, 李四, 王五, 田七] b3: false [张三, 李四, 王五, 田七] ================================ b4: true b5: false ================================ b6: false ================================ count: 4 ================================ 张三 李四 王五 田七 ================================ [] true
-
-
Iterator接口及迭代器
-
执行路口
package cn.xiaoge.day13.demo02; /* java.util.Iterator接口: 迭代器(对集合遍历) 有两个常用的方法 boolean hasNext() 如果仍有元素可以迭代,则返回 true。 判断集合中还有没有下一个元素, 有就返回true, 没有就返回false E next() 返回迭代的下一个元素。 取出集合中的下一个元素 Iterator迭代器, 是一个接口, 我们无法直接使用, 需要使用Iterator接口的实现类对象, 获取实现类的方式比较特殊 Collection接口中有一个方法, 叫iterator(), 这个方法返回的就是迭代器的实现类对象. Iterator<E> iterator() 返回在此 collection 的元素上进行迭代的迭代器. 迭代器的使用步骤(重点): 1. 使用集合中的方法iterator()获取迭代器的实现类对象, 使用Iterator接口接收(多态) 2. 使用Iterator接口中的方法hasNext判断还有没有下一个元素. 3. 使用Iterator接口中的方法next取出集合中的下一个元素. */ import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class Demo01Iterator { public static void main(String[] args) { // 创建一个集合对象 Collection<String> coll = new ArrayList<>(); // 往集合中添加数据 coll.add("姚明"); coll.add("科比"); coll.add("麦迪"); coll.add("詹姆斯"); coll.add("艾弗森"); /* 1. 使用集合中的方法iterator()获取迭代器的实现类对象, 使用Iterator接口接收(多态) 注意: Iterator<E>接口也是有泛型的, 迭代器的泛型跟着集合走, 集合是什么泛型, 迭代器就是什么泛型 */ // 多态 接口 实现类 Iterator<String> it = coll.iterator(); /* 发现使用迭代器取出集合中元素的代码, 是一个重复的过程 所以我们可以使用循环优化 不知道集合中有多少元素, 使用while循环 循环结束的条件, hasNext方法返回false */ while (it.hasNext()){ String s = it.next(); System.out.println(s); } System.out.println("====================="); for (Iterator<String> it2 = coll.iterator(); it2.hasNext();) { String s = it2.next(); System.out.println(s); } // 2. 使用Iterator接口中的方法hasNext判断还有没有下一个元素. // boolean b = it.hasNext(); // System.out.println(b); // true // // // 3. 使用Iterator接口中的方法next取出集合中的下一个元素. // String s = it.next(); // System.out.println(s); // // // b = it.hasNext(); // System.out.println(b); // s = it.next(); // System.out.println(s); // // b = it.hasNext(); // System.out.println(b); // s = it.next(); // System.out.println(s); // // b = it.hasNext(); // System.out.println(b); // s = it.next(); // System.out.println(s); // // b = it.hasNext(); // System.out.println(b); // s = it.next(); // System.out.println(s); // // b = it.hasNext(); // System.out.println(b); // 没有元素, 返回false // s = it.next(); // 没有元素, 在取出元素会抛出NoSuchElementException没有元素异常 // System.out.println(s); } } // 运行结果 姚明 科比 麦迪 詹姆斯 艾弗森 ===================== 姚明 科比 麦迪 詹姆斯 艾弗森
-
-
增强for循环
-
执行路口
package cn.xiaoge.day13.demo02; /* 增强for循环: 底层使用的也是迭代器, 使用for循环的格式, 简化了迭代器的书写 是JDK1.5之后出现的新特性 Collection<E>extends Iterator<E>: 所有的单列集合都可以使用增强for public interface Iterable<T>实现这个接口允许对象成为 "foreach" 语句的目标. 增强for循环: 用来遍历集合和数组 格式: for(集合/数组的数据类型 变量名: 集合名/数组名){ sout(变量名); } 注意: 新for循环必须有被遍历的目标. 目标只能是集合或者是数组. 新式for仅仅作为遍历操作出现. */ import java.util.ArrayList; import java.util.Collection; public class Demo02Foreach { public static void main(String[] args) { demo01(); System.out.println("====================="); demo02(); } // 使用增强for循环遍历集合 private static void demo02() { Collection<String> list = new ArrayList<>(); list.add("aaa"); list.add("bbb"); list.add("ccc"); list.add("ddd"); for(String s: list) { System.out.println(s); } } // 使用增强for循环遍历数组 private static void demo01() { int[] arr = {1, 2, 3, 4, 5}; for(int i: arr){ System.out.println(i); } } } // 运行结果 1 2 3 4 5 ===================== aaa bbb ccc ddd
-