JAVA的集合

一、JAVA两大集合阵营

1、Collection

  (1)Set

    ①HashSet(重写hashcode和equals方法)

      LinkedHashSet(有序的)(遍历比较快)

    ②SortedSet

      TreeSet(需要添加同一类型的数据,自动排序,需要实现comparable接口)((comparable的方法compareTo或者comparator的方法compare)和hashcode和equals三者一致)(在添加数据时排序,在添加完数据后修改属性是不会触发重新排序的,这样子就会导致数据的排序不准或者重复,所以TreeSet在添加完数据后不要修改)

  (2)List(ArrayList,LinkedList,Vector)

2、Map

    (1)HashMap(重写hashcode和equals方法)(数组+链表+红黑树)(这里的value值的对象需要实现equals方法)

        LinkedHashMap(有序的)(遍历比较快)

    (2)SortedMap

        TreeMap(红黑树)(需要添加同一类型的数据,自动排序,需要实现comparable接口)((comparable的方法compareTo或者comparator的方法compare)和hashcode和equals三者一致)(在添加数据时排序,在添加完数据后修改属性是不会触发重新排序的,这样子就会导致数据的排序不准或者重复,所以TreeMap在添加完数据后不要修改)

    (3)HashTable      

        Properties

3、Iterator

    ListIterator

    Enumeration(Iterator的旧版本)

4、Collections

    扩展common-collections,guava-libraries

    同步器

    不可变的容器

5、比较器comparable与comparator

如果comparable的方法compareTo或者comparator的方法compare同时存在的话,那么按照后者来

6、Hash的依据(与底层实现相关)

equals和hashcode(需要重写这两个方法)

7、Tree的依据(与底层实现相关)

Comparable和Comparator(需要重写这两个方法其中之一)

二、JAVA集合的一些注意点:

  使用内部类实现迭代器

java集合是不能存放基本数据类型的

要实现使用(增强for循环)遍历容器,需要容器实现(interface  Iterable<T>接口的Iterator<T> iterator()方法

HashMap和HashSet是需要重写HashCode与equals方法的,其他的集合只需要重写equals方法的

HashMap的HashCode方法要与equals方法一致

1、Iterator迭代器

    迭代器是对容器遍历的一种抽象,更加能体现出java的接口的多态性,在实现类改变的情况下,代码可以不变。

1.1、hasNext

1.2、next

1.3、remove

      注意:这里的remove只能在next后面执行一次

三、Set

1、HashSet可以添加null值

2、TreeSet这是个实现,有序的set

四、Map

  1、HashMap也可以添加null值(key可以为一个null,value可以为多个null)(线程不安全)

  2、HashTable里面不能存放null值(key与value都不能为null)(线程安全)

 五、Properties(key和value都只能为字符串)

三种方式加载

    public static void main(String[] args) throws Exception {
            Properties properties = new Properties();
            File file = new File("test22.txt");
            InputStream is = new FileInputStream(file);
            properties.load(is);
            System.out.println(properties);
            is.close();
    }

五、List

  Arraylist  底层实现是数组,线程不安全,查询快,(增加、修改、删除)慢

  LinkedList  底层实现是链表,线程不安全,查询慢,增加、修改、删除)快

  Vector  底层实现是数组,但是线程安全的。

1、ArrayList

2、LinkedList

六、其他的集合

  1、Queue(普通队列,优先队列,堆栈)

  抛出异常 特殊值
插入 add offer
移除 remove poll
获取 element peek

  

 

  2、Deque(双端队列)

     3、

 参考文献

原型态的集合:https://segmentfault.com/a/1190000018189575?utm_source=tag-newest

原文地址:https://www.cnblogs.com/erdanyang/p/10302540.html