集合超全关系分析

来源:互联网 发布:2016十大网络用语作文 编辑:程序博客网 时间:2024/06/04 18:53
集合:单列集合双列集合一:单列集合:Collection接口【有List和Set子接口】{1:添加功能boolean add(Object obj):添加一个元素boolean addAll(Collection c):添加一个集合的元素,将括号里的全部元素放到另一个集合的后面2:删除功能void clear():移除所有元素boolean remove(Object o):移除一个元素boolean removeAll(Collection c):移除一个集合的元素(是一个还是所有),移除与括号里集合元素相同的元素;3:判断功能boolean contains(Object o):判断集合中是否包含指定的元素【底层依赖的是equals()方法】boolean containsAll(Collection c):判断集合中是否包含指定的集合元素(是一个还是所有),判断括号里的全部元素是否包含在另一个集合里面;boolean isEmpty():判断集合是否为空4:获取功能Iterator<E> iterator()(获取元素,并移动到下一个位置。用于Collection集合遍历){Iterator下的方法:Object Next();获取集合元素boolean HashNext:判断是否还有集合元素}5:长度功能int size():元素的个数6:交集功能boolean retainAll(Collection c):两个集合都有的元素?思考元素去哪了,{假设集合A和集合B,集合A调集合B,那么相同的元素放在集合A里,如果为空集,A就为空,放回值表示集合A是否改变,改变为true,反之。}7:把集合转换为数组  Object[] toArray();将集合元素转换成数组,在进行遍历}(一):List:【有ArrayList、Vector和LinkedList子类】{【解释:有序的 collection(也称为序列),列表允许重复的元素】 A:添加功能void add(int index,Object element):在指定位置添加元素 B:获取功能Object get(int index):获取指定位置的元素,可以用来遍历。 C:列表迭代器ListIterator listIterator():List集合特有的迭代器(该迭代器继承了Iterator迭代器,所以可以直接是有Next()和HashNext()方法)(迭代器ListIterator接口的实现子类:Object previous():获取上一个元素boolean hasPrevious():判断是否有元素) D:删除功能Object remove(int index):根据索引删除元素,返回被删除的元素 E:修改功能Object set(int index,Object element):根据索引修改元素,返回被修饰的元素}ArrayList(是List接口的直接实现类和Collection接口的间接实现类,无特殊方法)【底层数据结构是数组,查询快,增删慢。线程不安全,效率高】vector{【底层数据结构是数组,查询快,增删慢,线程安全,效率低】A:添加功能public void addFirst(Object e)  public void addLast(Object e)B:获取功能 public Object getFirst()public Obejct getLast()C:删除功能public Object removeFirst()  public Object removeLast()}LinkedList{【 底层数据结构是链表,查询慢,增删快,线程不安全,效率高】1:添加功能public void addElement(Object obj)-- add()2:获取功能public Object elementAt(int index)--  get()public Enumeration elements()-- Iterator iterator()boolean hasMoreElements()--hasNext()Object nextElement()--next()  } (二)Set【有HashSet、LinkedHashSet和TreeSet子类;无特殊方法,无序(存储顺序和取出顺序不一致),唯一】:HashSet【无特殊方法,底层数据结构是哈希表。哈希表依赖两个方法:hashCode()和equals()执行顺序:首先判断hashCode()值是否相同是:继续执行equals(),看其返回值是true:说明元素重复,不添加是false:就直接添加到集合否:就直接添加到集合】LinkedHashSet【无特殊方法,:底层数据结构由哈希表和链表组成。哈希表保证元素的唯一性。链表保证元素有序。(存储和取出是一致)底层数据结构由链表和哈希表组成。由链表保证元素有序。由哈希表保证元素唯一。】TreeSet【无特殊方法,能够对元素按照某种规则进行排序。底层数据结构是红黑树。  排序有两种方式  A:自然排序  B:比较器排序  TreeSet集合的特点:排序和唯一】二:双列集合:Map接口【有TreeMap、HashMap和LinkedHashMap实现子类A:Map集合的数据结构仅仅针对键有效,与值无关。B:存储的是键值对形式的元素,键唯一,值可重复。】{  1:添加功能  V put(K key,V value):添加元素。这个其实还有另一个功能?先不告诉你,等会讲  如果键是第一次存储,就直接存储元素,返回null  如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值  2:删除功能  void clear():移除所有的键值对元素  V remove(Object key):根据键删除键值对元素,并把值返回  3:判断功能  boolean containsKey(Object key):判断集合是否包含指定的键  boolean containsValue(Object value):判断集合是否包含指定的值  boolean isEmpty():判断集合是否为空  4:获取功能  Set<Map.Entry<K,V>> entrySet():  V get(Object key):根据键获取值  Set<K> keySet():获取集合中所有键的集合  Collection<V> values():获取集合中所有值的集合  5:长度功能  int size():返回集合中的键值对的对数}HashMap【无特殊方法, HashMap:是基于哈希表的Map接口实现。哈希表的作用是用来保证键的唯一性的。底层数据结构是哈希表。线程不安全,效率高哈希表依赖两个方法:hashCode()和equals()执行顺序:首先判断hashCode()值是否相同是:继续执行equals(),看其返回值是true:说明元素重复,不添加是false:就直接添加到集合否:就直接添加到集合】LinkedHashMap【无特殊方法, LinkedHashMap:是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。 由哈希表保证键的唯一性 由链表保证键盘的有序(存储和取出的顺序一致)】 Hashtable【底层数据结构是哈希表。线程安全,效率低哈希表依赖两个方法:hashCode()和equals()执行顺序:首先判断hashCode()值是否相同是:继续执行equals(),看其返回值是true:说明元素重复,不添加是false:就直接添加到集合否:就直接添加到集合最终:自动生成hashCode()和equals()即可】TreeMap【无特殊方法,TreeMap:是基于红黑树的Map接口的实现。如何保证元素唯一性呢?根据比较的返回值是否是0来决定如何保证元素的排序呢?两种方式自然排序(元素具备比较性)让元素所属的类实现Comparable接口比较器排序(集合具备比较性)让集合接收一个Comparator的实现类对象】

0 0
原创粉丝点击