zoukankan      html  css  js  c++  java
  • 集合

    * java.util.Collection接口:是根据所有单列集合共性抽取出来形成的父接口
    * 里边包含了所有集合中共性的内容(方法)

       api:

        * void clear() 移除此 collection 中的所有元素 , 清空的是集合中的元素,集合本身仍然存在     

        * boolean add(E e) 往集合末尾追加元素,此方法的返回值,一定是true

        * boolean remove(Object o)移除集合中指定的元素,如果有重复的元素,删除的是第一个出现的元素

         * boolean contains(Object o) ,判断对象是否存在于集合中,存在就返回true,不存在返回false

         * int size() ,返回此 collection 中的元素数。

        *  Object[] toArray() 把集合转成数组,返回的是一个存储对象的数组,数组存储的数据类型是Object

        *  void clear()   移除此 collection 中的所有元素,清空的是集合中的元素,集合本身仍然存在

    * java.util.Iterator接口:迭代器
    * 作用:集合的数据类型不同,存储数据不同,取出数据的方式也不同,
    * 所以java就提供了一种技术,称之为迭代,是一种公共的取出集合中元素的方式.
    *
    * 迭代:在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就再取出出来。
    * 一直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代。
    *
    * 成员方法:
    * boolean hasNext() 如果仍有元素可以迭代,则返回 true。 (判断集合是否还有元素)
    * E next() 返回迭代的下一个元素。 (取出集合中的元素)
    *
    * 迭代器Iterator是一个接口,找到接口的实现类,是每个集合的内部类
    * 在Collection接口中提供了一个方法叫iterator
    * Iterator<E> iterator() 返回在此 collection 的元素上进行迭代的迭代器。
    * 此方法就返回了迭代器Iterator的实现类对象
    *
    * 面向接口编程方式:
    * iterator方法返回了迭代器Iterator的实现类对象,我们不需要关注返回的是哪个实现类对象,
    * 只需要知道返回的是Iterator的实现类对象就够了,我们可以使用接口Iterator来来接收这个对象(多态)
    *
    * 迭代器的使用步骤:
    * 1.创建一个集合,存储多个元素
    * 2.调用集合中的方法iterator,获取迭代器的实现类对象,使用接口Iterator接收这个对象(多态)
    * 3.调用Iterator中的方法hasNext和next依次取出集合中的元素

    * 迭代器的并发修改异常:ConcurrentModificationException
    * 我们在迭代集合中元素的时候,如果修改了集合的长度(添加元素/减少元素)
    * 而这个时候迭代器正在工作,不知道集合的长度进行修改,所以就会抛出并发修改异常(罢工)
    *
    * 解决方案:
    * 1.在迭代的过程中,不对集合的长度进行修改(没用)
    * 2.只针对List接口的下边的集合,Iterator迭代器有一个子接口叫ListIterator
    * 这个接口有很多自己特有的方法
    * void add(E e) 将指定的元素插入列表(可选操作)。
    * void remove() 从列表中移除由 next 或 previous 返回的最后一个元素(可选操作)。
    * 我们可以使用这个接口的add/remove方法,让迭代器自己增加/删除集合中的元素
    * 相当于迭代器已经同意了集合添加/删除元素,就不会罢工(抛异常)

    * java.util.List接口 extends Collection接口
    *
    * List接口的特点:
    * 1.有序的集合:存入元素和取出元素的顺序是一致的 存:abc 取:abc
    * 2.有索引,可以使用普通for循环遍历集合
    * 3.允许存储重复元素
    *
    * 因为有索引,所以包含了含有索引的特有方法
    * void add(int index, E e)在指定的索引上添加元素
    * E remove(int index)移除并返回,指定索引上的元素
    * E set(int index, E e) 修改并返回值指定索引上的元素
    * E get(int index) 返回列表中指定位置的元素。
    *
    * 使用带索引的方法,一定要防止索引越界异常:
    * IndexOutOfBoundsException:索引越界异常(集合)
    * StringIndexOutOfBoundsException:字符串索引越界异常
    * ArrayIndexOutOfBoundsException:数组索引越界异常

        

    * java.util.LinkedList集合 implments List接口
    *
    * LinkedList是链表结构:查询慢,增删快
    * 是一个双向链表:存储元素和取出元素是有序的
    *
    * 有大量的操作首尾元素的方法
    * 要使用LinkedList集合特有的方法,不能使用多态

    api:

    * E removeFirst() 移除并返回此列表的第一个元素。

    * E pop() 移除并返回此列表的第一个元素。 此方法等效于 removeFirst()。
    * E removeLast() 移除并返回此列表的最后一个元素。

    * E getFirst() 返回此列表的第一个元素。
    * E getLast() 返回此列表的最后一个元素。
    * boolean isEmpty() 如果列表不包含元素,则返回 true。

    * void addFirst(E e) 将指定元素插入此列表的开头。
    * void push(E e) 将该元素插入此列表的开头。 此方法等效于 addFirst(E)。
    * void addLast(E e) 将指定元素添加到此列表的结尾。相当于 add(E e)

    * java.util.Set接口 extends Collection接口
    * Set接口的特点:
    * 1.不允许存储重复的元素
    * 2.没有索引,不能使用普通for循环遍历,只能使用增强for/迭代器
    * 里边的方法和Collection是一样的
    *
    * java.util.HashSet 集合 implments Set接口
    * HashSet集合的特点:
    * 1.不允许存储重复的元素
    * 2.没有索引,不能使用普通for循环遍历,只能使用增强for/迭代器
    * 3.自身的特点:是一个无序的集合,存入的元素和取出的元素顺序可能不同
    *
    * HashSet结构的特点:底层是一个哈希表(数组+链表)
    * 即查询快,又增删快

    * 哈希值:就是一个十进制的整数,由操作系统随机给出
    *
    * 在Object类中有一个方法叫hashCode(),可以获取到对象的哈希值
    * int hashCode() 返回该对象的哈希码值。

    * java.util.LinkedHashSet 集合 extends HashSet implments Set
    * LinkedHashSet特点:
    * 1.不允许重复重复元素
    * 2.是一个有序的集合
    * 结构:哈希表(数组+链表)+链表-->是一个双向链表,可以保证迭代的顺序

    * java.util.Map<K,V>接口
    * Map集合的特点:
    * 1.是一个双列集合,有两个泛型,键key,值value
    * 2.我们使用Map集合就需要为两个泛型赋值,而这两个泛型的类型可以相同,也可以不同
    * 3.Map集合中的key不能重复,但是value可以重复,key是唯一的。
    * 4.一个key对应一个value值
    *
    * java.uitl.HashMap集合 implments Map接口
    * 1.底层是一个哈希表(数组+链表):即查询快,又增删快
    * 2.因为只有一条链表,所以是一个无序的集合(存储元素和取出元素有可能不一致)

    * 将键值对存储到集合中
    * V put(K key, V value) K 作为健对象 V 作为值对象
    * 存储的是重复的健,将原有的值覆盖
    * 返回值一般情况下返回的是 null,存储重复健的时候,返回被覆盖之前的值

    api:

    * V put(K key, V value) K 作为健对象 V 作为值对象
    * 存储的是重复的健,将原有的值覆盖
    * 返回值一般情况下返回的是 null,存储重复健的时候,返回被覆盖之前的值

    * V get(Object key),通过健对象,获取值对象,如果集合中没有这个健,返回 null

    * V remove(Object key),根据指定的健,移除集合中的键值对,返回是被移除之前的值,如果集合中没有这个健,返回 null

    * Set<K> keySet() 返回此映射中所包含的键的 Set 视图(将map中的key值都取出来放到set集合中)

     * Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的 Set 视图。(将map中的映射关系Map.Entry<T,T>取出来)。。。。。。getKey()  getValue()

    keySet() 和entrySet()便遍历map的两种方式。

    HashMap存储自定义类型键值
    * HashMap集合想要保证键不能重复:
    * 作为键的对象,必须重写hashCode and equals方法

     java.util.LinkedHashMap<K,V> extends HashMap集合
    特点:
    * 1.数据结构:哈希表(数组+链表)+链表,是一个双向链表,可以保证迭代的顺序(有序)
    * 2.key不能重复,value可以重复

    * Map 的实现类 Hashtable
    * 底层数据结构是哈希表,特点和 hashMap 是一样的
    * Hashtable 是线程安全的集合,运行速度慢(单线程)
    * HashMap 是线程不安全的集合,运行速度快(多线程)
    *
    * Hashtable 命运和 Vector 是一样的,从 JDK1.2 开始,被更先进的 HashMap 取代
    *
    * HashMap 允许存储 null 值,null 健
    * hashtable 不允许存储 null 值,null 健
    *
    * Hashtable 他的孩子,子类 Properties 依然活跃在开发舞台

    相关工具类

    * java.util.Collections:操作集合的工具类
    *
    * 常用的方法:
    * static void shuffle(List<?> list) 使用默认随机源对指定列表进行置换。
    * 打乱List集合中的元素的顺序
    *
    * static void sort(List<T> list) 根据元素的自然顺序 对指定列表按升序进行排序。
    * 对List集合中的元素进行升序排序
    *
    * static <T> int binarySearch(List<?>> list, T key) 折半查找
    * 使用二分搜索法搜索指定列表,以获得指定对象。
    * 参数:
    list - 要搜索的列表。
    key - 要搜索的键。
    返回:
    如果搜索键包含在列表中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。

    * 数组工具类:Arrays
    * static int binarySearch(Object[] a, byte key) 二分查找
    * static void sort(Object[] a) 快速排序(升序)
    * static String toString(boolean[] a) 返回指定数组内容的字符串表示形式。

    出身决定命运,但努力一定不会错。
  • 相关阅读:
    js初学
    普通的checkbox的回显功能
    Jquery的显示与隐藏
    jQuery 事件
    jquery选择器(1)
    页面截取字段和转码,页面截取字段时候需要进入JS
    页面中的多选框的非空判断
    jquery中清空
    java代码拼写sql
    iframe中用到的例子
  • 原文地址:https://www.cnblogs.com/xiaolige/p/9516336.html
Copyright © 2011-2022 走看看