小东吖 之 java Collection集合和迭代器

来源:互联网 发布:网络大电影受众人群 编辑:程序博客网 时间:2024/05/24 05:43

一.Collection集合

数组: 存储同一种数据类型的集合容器.

数组的特点:
1. 只能存储相同数据类型的数据
2. 一旦给定了长度,数组长度被固定了,不能改变
3. 数组中的元素与元素之间的内存地址是连续的

注意: Object类型的数组可以存储任意类型的数据

集合:集合是存储对象数据的集合容器。

集合比数组的优势:
1. 集合可以存储任意类型的对象数据,数组只能存储同一种数据类型 的数据。
2. 集合的长度是会发生变化的,数组的长度是固定的。
注意:
集合虽然说可以储存任意类型的对象数据 是因为可以通过自动装箱保存基本数据类型

这里写图片描述

Collection 单例集合的根接口

 List  如果是实现了List接口的集合类,具备的特点: 有序,可重复。  ArrayList  底层是维护了一个Object数组实现的 特点: 查询速度快,增删慢。 LinkedList  底层是使用了链表数据结构实现的  特点: 查询速度慢,增删快。 Vector(了解即可)  底层也是维护了一个Object的数组实现的,实现与ArrayList是一样的,但是Vector是线程安全的,操作效率低。
Set  如果是实现了Set接口的集合类,具备的特点: 无序,不可重复。HashSet  底层是使用了哈希表来支持的,特点: 存取速度快. TreeSet   如果元素具备自然顺序 的特性,那么就按照元素自然顺序的特性进行排序存储。
  1. Collection接口中的方法:

    1.测试collection接口中的方法

// 首先定义Collection接口的// Collection是个接口  要遵循多态的方式 去创建实现类的对象Collection collection = new ArraryList();// 添加(返回值是布尔类型的)add() 添加成功返回true 否则返回falseaddAll(Collection c)  把一个集合 的元素添加到另外一个集合中去。// 添加一个字符串boolean b1 = collection.add("a");// 添加数字boolean b2 = collection.add(60);// 添加对象boolean b1 = collection.add(new Persom("小东吖",20) );System.out.println(collection);

结果

[a, 60]

2.addAll 两个集合 第一个集合传到 第一个

                // 定义第一个集合        Collection c1 = new ArrayList();        // 定义第二个集合        Collection c2 = new ArrayList();        c1.add("a");        c1.add("b");        // 把传入的集合中所有的元素 添加到第一个集合中        c2.add("q");        c2.add("w");        c2.add("e");        //c1.addAll(c2);        // 把一个集合当成一个元素传入到c1集合中        c1.add(c2);        System.out.println(c1);为什么能装基本数据类型?比如 add(60)Object obj = new Integer(100);其中有个自动装箱的操作

结果

[a, b, [q, w, e]]// 这里是把一个集合当成一个元素添加进去的

3.测试一些方法

Collection collection = new ArrayList();        collection.add("a");        collection.add("b");        collection.add("c");        collection.add("d");        // 测试方法  判读这个集合是不是空的        boolean b1 = collection.isEmpty();        System.out.println(b1);        // 获取集合长度        System.out.println(collection.size());        // 是否包含某个元素        boolean b2 = collection.contains("h");        System.out.println(b2);        // 删除某个元素        boolean b3 = collection.remove("c");        System.out.println("b3 = " + b3);        // 清空集合        collection.clear();        // 打印集合元素        System.out.println(collection);

结果

false4falseb3 = true[]

4.遍历字符串数组

        // 遍历字符串集合        Collection collection = new ArrayList();        collection.add("a");        collection.add("b");        collection.add("c");        collection.add("d");        // 将集合转化为数组        Object[] array = collection.toArray();        for (int i = 0; i < array.length; i++) {            System.out.println(array[i]);        }

结果

abcd
//创建一个集合 添加三个学生禁区 遍历集合 只打印学生姓名// 创建学生的类public class Student {    // 私有化成员变量    private String name;    private int age;    // 构造方法    public Student() {    }    public Student(String name,int age) {        this.age = age;        this.name = name;    }    // set / get 方法    public void setName(String name) {        this.name = name;    }    public String getName() {        return name;    }    public void setAge(int age) {        this.age = age;    }    public int getAge() {        return age;    }    //  直接打印student对象 就可以调用toString方法    @Override    public String toString() {        return "Student [name=" + name + ", age=" + age + "]";    }}// 遍历集合public static void main(String[] args) {        Collection collection = new ArrayList();        // 添加三个对象        collection.add(new Student("小东吖", 12));        collection.add(new Student("小东", 14));        collection.add(new Student("哈哈", 15));        //         // 强转数组类型 不能把数组中的元素强转        Object[] array = collection.toArray();        for (int i = 0; i < array.length; i++) {            // 数组遍历中要把数组中每一个对象(元素)都进行向下转型            // 向下转型.            Student student = (Student)array[i];            System.out.println(student.getName());        }    }

结果

小东吖小东哈哈

5.判断是否全部包含

containsAll(Collection<?> c)  如果此 collection 包含指定 collection 中的所有元素,则返回 true。 `````Collection collection1 = new ArrayList();        Collection collection2 = new ArrayList();        collection1.add("q");        collection1.add("w");        collection1.add("r");        collection2.add("c");        collection2.add("q");        boolean containsAll = collection1.containsAll(collection2);        System.out.println(containsAll);

结果

false

6.removeAll(Collection

  移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。
    // 删除重复的    Collection collection1 = new ArrayList();    Collection collection2 = new ArrayList();    collection1.add("q");    collection1.add("w");    collection1.add("r");    collection2.add("r");    collection2.add("s");    // 判断全部包含时 是可以有重复元素的 也算包含    collection1.removeAll(collection2);    System.out.println(collection1);

[q, w]

7.retainAll(Collection

  仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。
Collection collection1 = new ArrayList();        Collection collection2 = new ArrayList();        collection1.add("q");        collection1.add("w");        collection1.add("r");        collection2.add("y");        collection2.add("w");        // c1 转换成 是把两个集合的交集取出来        // 如果c1没变 就返回true        // c1改变了 返回 false        boolean retainAll = collection1.retainAll(collection2);        System.out.println(collection1);        System.out.println(retainAll);

二.集合迭代器

迭代器(Iterator)

  迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象

  (1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。
  注意:iterator()方法是java.lang.Iterable接口,被Collection继承。

  (2) 使用next()获得序列中的下一个元素。

  (3) 使用hasNext()检查序列中是否还有元素。

  (4) 使用remove()将迭代器新返回的元素删除。

1.迭代器应用:

 Collection collection = new ArrayList();        collection.add("a");        collection.add("b");        // 获取集合中迭代器        Iterator iterator = collection.iterator();        // 判断有没有下一个元素        boolean b1 = iterator.hasNext();        // 获取下一个元素        Object next = iterator.next();        System.out.println(b1);        System.out.println(next);    }

结果

truea

2.用迭代器遍历集合

 Collection collection = new ArrayList();        // 迭代器遍历时 相当于有一个指针 指向你的集合        // 每next一次 指针向后移动         // 最终遍历完成        collection.add("a");        collection.add("b");        collection.add("c");        collection.add("d");        //fun1(collection);        // 使用迭代器循环遍历数组        // 获取集合中迭代器        Iterator iterator = collection.iterator();        // 判断是否有下一个元素        while (iterator.hasNext()) {            // 获取集合中元素            Object next = iterator.next();            System.out.println(next);        }

结果

abcd
原创粉丝点击