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

posted @   海平面下的我们  阅读(184)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥
点击右上角即可分享
微信分享提示