JAVA 容器

直接看一张图,理解图中的结构其实容器大概就可以理解了

这里就将三个常见的容器接口类:Set List Map

重点:多态的实现,父类的指针指向子类的对象

Set

Set是Collection的子接口,实现Set接口的容器类的特点:无序,不重复

实现Set接口的类有:HashSet类

代码如下:

package com.zpchcbd.comtainer;

import java.util.HashSet;
import java.util.Set;

public class MyHashSet {
    public static void main(String[] args){
        Set s1 = new HashSet();s1.add("1");s1.add("2");s1.add("3");s1.add("a");
        Set s2 = new HashSet();s2.add("a");s2.add("b");s2.add("c");

        s1.retainAll(s2); //取交集
        System.out.println(s1);

        Set s3 = new HashSet(s2); //构造方法可以进行将其他容器的元素放进来
        System.out.println(s3);
    }
}

结果如图:

List

List是Collection的子接口,实现List接口的容器类的特点:有序,可重复

实现Set接口的类有:ArrayList LinkedList类

package com.zpchcbd.comtainer;

import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

public class MyLinkedList {
    public static void main(String[] args) {
        List l1 = new LinkedList<>();
        for(int i=0;i<5;i++){
            l1.add("a" + i);
        }

        System.out.println(l1);
        Collections.reverse(l1);
        System.out.println(l1);
        Collections.shuffle(l1);
        System.out.println(l1);
        Collections.sort(l1);
        System.out.println(l1);
    }
}

Map

Map是Collection的子接口,实现Map接口的容器类的特点:键值对存储,存储键值对的时候,主键不能重复,若重复后面键的值替换前面的键的值

实现Set接口的类有:HashMap TreeMap类

package com.zpchcbd.comtainer;

import java.util.HashMap;
import java.util.Map;

public class MyHashMap {
    public static void main(String[] args){
        Map m = new HashMap<>();
        m.put("aaa","111");
        m.put("bbb", new Integer(222));
        m.put("ccc","333");

        int i = (Integer) m.get("bbb");
        System.out.println(i);

        System.out.println(m);
    }
}

Iterator迭代器

在Collection接口中有个需要被实现的方法是Iterator<E> iterator();,该方法会返回一个iterator迭代器,通过这个迭代器可以实现遍历当前容器中的所有元素

1、需要注意的就是在遍历迭代器的过程中,无法通过容器的方法remove来进行移除指定元素

public class MyIterator2 {
    public static void main(String[] args) {
        Collection cHashSet = new HashSet();
        cHashSet.add(new Name("1111","aaaa"));
        cHashSet.add(new Name("2222","bbbb"));
        cHashSet.add(new Name("33","cc"));

        Iterator iterator;
        for(iterator = cHashSet.iterator();iterator.hasNext();){
            Name name = (Name)iterator.next();
            if(name.getFirstname().length() < 3){
                iterator.remove();
            }
        }
        System.out.println(cHashSet);
    }
}

posted @ 2020-08-15 19:33  zpchcbd  阅读(344)  评论(0编辑  收藏  举报