java中的集合,hashmap和hashtable区别,equal和==的区别

本文详细介绍了Java集合框架,包括List、Set、Map接口及其具体实现类如ArrayList、LinkedList、HashSet、HashMap等。同时,对比了HashMap与Hashtable在线程安全性、存储null值、效率和扩容策略等方面的差异。另外,还阐述了equal与==在对象比较时的不同。
摘要由CSDN通过智能技术生成
1.java里的集合有哪些,区别在哪

java所有的类都归于java.util包下,主要有两个接口派生出来,分别是Collection和Map.Collection,包含了List和Ser两大分支。Map作为一个映射接口。Set,Map,List可以看做集合三大类,遍历集合的工具有lterator和Enumeration;Arrays和Collection是操作数组集合的两个工具类。

  • list列表:有序的,可重复的
    • ArrayList 数组列表:使用数组实现
    • LinkedList双向链表:顺序读取效率高,随机读取效率低
    • Vector向量:线程安全的数组列表,同一时间只有一个线程访问,但性能低
    • Stack栈:继承自Vector,线程安全,后进先出
    • ArrayQueue数组队列:先进后出
  • queue队列:有序的,可重复的
    • ArrayDeque 数组实现的双端队列,可在两端插入删除元素
    • LinkedList 双向链表
    • PriorityQueue优先队列,数组实现的二叉树,完全二叉树实现的小顶堆
  • set集合:不可重复
    • HashSet:基于HashMap实现的集合,对HashMap做了一些封装,与HashMap不同的是对元素的保存为链表形式。
    • LinkedHashSet 链表集合:继承自HashSet与LinkedHashMap相似,是对其的封装
    • TreeSet 红黑树集合:与TreeMap相似是对其的封装
  • map映射:无序的,键唯一值不唯一
    • HashMap 哈希映射/字典,键值对应数据,可为null
    • TreeMAp 红黑树实现的key-value融合,可排序,自平衡二叉树
    • LinkedHashMap 链表映射:继承了HashMap的所有特性,又实现了双向链表,保留元素的插入顺序。

比较

2.hashmap和hashtable的区别

相同:都是双列集合,底层都是hash算法

不同

HashMapHashTable
线程不安全线程安全
效率高效率低
可存储null不可存储null
侧重hash算法效率侧重减少hash冲突

初始容量和扩充容量大小不同:

  • HashMap :初始大小11,扩充大小2n+1
  • HashTable :初始大小16,扩充大小:原空间大小*2

实例

public class testHashtable {
    public static void main(String []args){
        HashMap<String,Integer> hm=new HashMap<>();
        hm.put(null,1);
        hm.put("张三",null);
        System.out.println(hm);
        Hashtable<String,Integer> ht=new Hashtable<>();
        ht.put(null,8);
        ht.put("张三",null);
        System.out.println(ht);
    }
}
3.equal和==的区别:
equal==
方法运算符
比较值比较内存地址

注意:

  • java基本类型只能用==(short,int,long,byte, char, float, double, boolean)
  • 比较对象(包装类型)需要用equal
  • 比较string类型见参考链接:equal与==的区别
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值