zoukankan      html  css  js  c++  java
  • Java集合对比

    java中的集合类结构
    集合结构

    List、Set和Map:
    List是有序的集合,Set是无序的集合。Map是无序的键值对。

    HashMap详解:
    HashMap有两个参数影响其性能:初始容量和加载因子。默认初始容量是16,加载因子是0.75。容量是哈希表中桶(Entry数组)的数量,初始容量只是哈希表在创建时的容量。加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前容量的乘积时,通过调用 rehash 方法将容量翻倍。

    ArrayList和Vector对比:
    都是List的实现类。他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我们以后可以按位置索引号取出某个元素
    Vector是线程安全的,也就是说是它的方法之间是线程同步的,而ArrayList是线程序不安全的,它的方法之间是线程不同步的。如果只有一个线程会访问到集合,那最好是使用ArrayList,因为它不考虑线程安全,效率会高些;如果有多个线程会访问到集合,那最好是使用Vector,因为不需要我们自己再去考虑和编写线程安全的代码

    ArrayList和LinkedList对比:
    1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
    2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
    3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

    HashSet和TreeSet对比:
    HashSet比TreeSet的性能要好,因为TreeSet需要额外的红黑树算法来维护集合的次序。所以只有当需要保持排序的Set时候,才会使用TreeSet,否则都应该使用HashSet。

    HashSet和HashMap对比:
    都是采用Hash算法来决定元素的存储位置,并通过hash算法来增加集合大小的。其中最大的区别就是,HashSet实现的Set接口,他不允许有重复的值。HashMap实现的是Map接口,里面存储的是键值对,map中不允许存在重复的key。

    HashMap和HashTable对比:
    HashTable是一个线程安全的Map实现,但HashMap是线程不安全的实现,所以HashMap比HashTable的性能高一些;但是如果有多个线程访问同一个Map对象时候,应该使用HashTable。
    HashTable不允许使用null作为key和value,如果视图把null值放入HashTable中会引发NullPointerException异常,但是HashMap可以使用null作为key或value。null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示 HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。

    各集合对比:
    集合对比

  • 相关阅读:
    C# 创建winfrom项目(三层+postgresql)
    建站系列 安装GeoServer
    建站系列 离线环境安装tomcat
    建站系列 yum安装tomcat
    建站系列 yum安装java环境
    《计算机网络基础》笔记 2——MAC相关概念
    以太网帧长度为什么不能小于64字节?
    《计算机网络基础》笔记 1——体系结构介绍
    以太网MAC协议–CSMA/CD协议
    docker-compose固定IP和mac示例
  • 原文地址:https://www.cnblogs.com/w2758472746/p/13970260.html
Copyright © 2011-2022 走看看