单列集合Collection

    科技2024-01-07  126

    单列集合

    集合框架1、概念2、集合框架 Collection接口1、常用方法 迭代器1、迭代器原理2、foreach循环3、迭代器使用常见问题 泛型基本使用1、为什么要有泛型?2、泛型的语法:3、泛型注意的地方

    集合框架

    1、概念

    概念:集合一种容器,可以存储对象。集合和数组区别: 数组的长度固定,集合长度不固定数组可以存储基本数据类型和引用数据类型 int[] / Student[],集合是能存储引用数据类型数组中每个元素都是相同的数据类型,集合可以存储不同的数据类型

    2、集合框架

    Collection接口

    单列集合的顶层接口

    1、常用方法

    add方法向集合集合中添加元素clear方法,清空集合中所有元素contains方法 判断集合是否包含某个元素isEmpty判断集合是否为空remove方法 移除集合中元素,返回boolean类型。如果集* * 合中不包含次元素,则删除失败size()返回集合中元素的个数toArray将集合转换成数组。addAll 向一个集合中添加另一个集合containsAll 判断一个集合中是否包含另一个集合removeAll 从一个集合中移除另一个集合 public class CollectionDemo { public static void main(String[] args) { //创建Collection 对象 Collection coll = new ArrayList(); //常用方法 //add方法向集合集合中添加元素 coll.add("张三"); coll.add(10); coll.add(20.20); coll.add(new Student("cxk")); System.out.println(coll);//[张三, 10, 20.2, Student{name='cxk'}] //clear方法,清空集合中所有元素 // coll.clear(); // System.out.println(coll); //contains方法 判断集合是否包含某个元素 System.out.println(coll.contains("张三"));//true System.out.println(coll.contains("cxk"));//false //isEmpty判断集合是否为空 System.out.println(coll.isEmpty());//false //remove方法 移除集合中元素,返回boolean类型。如果集合中不包含次元素,则删除失败 coll.remove("张三1"); System.out.println(coll);//[张三, 10, 20.2, Student{name='cxk'}] //size()返回集合中元素的个数 System.out.println("集合中元素的个数:"+coll.size());//集合中元素的个数:4 //toArray将集合转换成数组。 Object[] arr = coll.toArray(); System.out.println(Arrays.toString(arr));// [张三, 10, 20.2, Student{name='cxk'}] System.out.println("---------------------------------------------------------"); Collection coll1 = new ArrayList(); coll1.add("1"); coll1.add("2"); Collection coll2 = new ArrayList(); coll2.add("a"); coll2.add("b"); //addAll 向一个集合中添加另一个集合 coll1.addAll(coll2); System.out.println(coll1); // [1, 2, a, b] //containsAll 判断一个集合中是否包含另一个集合 System.out.println(coll2.containsAll(coll1));//false //removeAll 从一个集合中移除另一个集合 coll2.removeAll(coll1); System.out.println(coll2); //[] } private static class Student { String name; public Student(String name) { this.name = name; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + '}'; } } }

    迭代器

    1、迭代器原理

    演示

    public class IteratorDemo { public static void main(String[] args) { //创建Collection对象 Collection coll = new ArrayList(); coll.add("张三1"); coll.add("张三2"); coll.add("张三3"); coll.add("张三4"); coll.add("张三5"); coll.add("张三6"); //通过集合获取迭代器对象 Iterator it = coll.iterator(); while(it.hasNext()) { System.out.println(it.next()); } } }

    2、foreach循环

    foreach循环即增强版的for循环

    /** * foreach循环 增强版for循环 * 语法: * for(每个元素的类型 变量 :要遍历的集合){ * * } */ for(Object obj:coll) { System.out.println(obj); }

    3、迭代器使用常见问题

    如果迭代器使用过,那么游标指向最后的位置在一次迭代中,不要多次调用next方法在迭代器迭代的时候,不能对集合进行添加或删除如果在迭代过程要移除元素,需要使用迭代器的remove方法 public class Demo10 { public static void main(String[] args) { //创建Collection对象 Collection coll = new ArrayList(); coll.add("张三1"); coll.add("张三2"); coll.add("张三3"); coll.add("张三4"); coll.add("张三5"); coll.add("张三6"); coll.add("张三7"); //通过集合获取迭代器对象 Iterator it = coll.iterator(); while(it.hasNext()) { System.out.println(it.next());//可以输出 } //一、如果迭代器使用过,那么游标指向最后的位置 while(it.hasNext()) { System.out.println(it.next());//无法输出,上面用过了 } //二、在一次迭代中,不要多次调用next方法 java.util.NoSuchElementException while(it.hasNext()) { Object obj = it.next(); System.out.print(it.next()+"\t");//张三2 张三4 张三6 java.util.NoSuchElementException } //三、在迭代器迭代的时候,不能对集合进行添加或删除 java.util.ConcurrentModificationException while(it.hasNext()) { coll.add("rose"); coll.remove("张三3"); System.out.println(it.next());//java.util.ConcurrentModificationException } //四、如果在迭代过程要移除元素,需要使用迭代器的remove方法 while(it.hasNext()) { System.out.print(it.next()+"\t");//张三1 张三2 张三3 张三4 张三5 张三6 张三7 it.remove(); } System.out.println(coll);//[] } }

    泛型基本使用

    1、为什么要有泛型?

    如果不使用泛型,那么集合中存储的元素,要不断 发生向上向下转型,而转型就有可能会发生错误泛型的作用就是将类型的检查提前到了编译期

    2、泛型的语法:

    集合<类型> 集合名 = new 集合<类型>();

    3、泛型注意的地方

    泛型不存在多态,没有继承 Collection<Animal> coll1 = new ArrayList<Dog>(); 报错 只能使用基本数据类型的包装类 Collection<Integer> cool2 = new ArrayList<Integer>(); ``` 
    Processed: 0.008, SQL: 8