• Set


    Set

    Set继承自Collection接口,用于存储无序元素,值不能重复。自定义类要使用Set的时候,需要重写hashcode方法和equals方法。

    1. HashSet

    HashSet是基于HashMap实现的:

    成员变量:

    private transient HashMap<E, Object> map;
    private static final Object PRESENT = new Object();
    

    构造函数:

    public HashSet() {
    	this.map = new HashMap();
    }
    

    Add方法

    public boolean add(E e) {
        return this.map.put(e, PRESENT) == null;
    }
    

    Contains方法:

    public boolean contains(Object o) {
        return this.map.containsKey(o);
    }
    

    Remove方法

    public boolean remove(Object o) {
        return this.map.remove(o) == PRESENT;
    }
    

    2. TreeSet

    TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>
    

    继承自AbstractSet,实现了NavigableSet,实现了元素有序

    成员变量:

    private transient NavigableMap<E, Object> m;
    private static final Object PRESENT = new Object();
    

    构造函数:

    public TreeSet() {
        this((NavigableMap)(new TreeMap()));
    } // 和TreeMap有关
    

    Add方法

    public boolean add(E e) {
        return this.m.put(e, PRESENT) == null;
    }
    

    Contains方法:

    public boolean contains(Object o) {
        return this.map.containsKey(o);
    }
    

    Remove方法

    public boolean remove(Object o) {
        return this.m.remove(o) == PRESENT;
    }
    
  • 相关阅读:
    12-14面向对象--抽象基类、接口、委托
    关于 try catch catch
    C# using 三种使用方式
    互斥锁(Mutex)
    C#中Monitor类、Lock关键字和Mutex类
    System.Data.SQLite
    Dictionary<TKey, TValue> 类
    AttributeTargets 枚举
    C# is和as操作符
    合并委托(多路广播委托)
  • 原文地址:https://www.cnblogs.com/punnpkin/p/13583486.html
Copyright © 2020-2023  润新知