java集合

集合概述

集合就是对象的容器

List(有序集合)

  • Vector和ArrayList
    • 不同点
      • ArrayList: 1.线程不安全 2.速度快 3. 长度增长率为50%
      • Vector: 1.线程安全 2.速度慢 3. 长度增长率为100%
    • 相同点
      • 都是采用动态数组方式存储数据
      • 查询数据的时间成本相同
      • 插入数据慢(因为涉及到移动数据)
    • 动态数组的原理 --> 创建一个更长的新数组,再将老数组里的数据拷贝进来
  • ArrayList和LinkedList(都不是线程安全的)
    • ArrayList: 1.底层用数组实现 2.查询快 3. 随机插入和删除慢(要移动数据)

    • LinkedList: 1.底层用双向链表实现 2.查询慢 3. 随机插入和删除快

    • 我们可以用如下方法得到一个线程安全的List

        List list = Collections.synchronizedList(new LinkedList(…));
      
  • Stack继承自Vector,实现一个后进先出的堆栈

Set(无序集合,元素不可重复)

  • 元素是否相同是靠重写equals()和hashCode()方法来判定的
  • HashSet和LinkedHashSet(都是接口Set的实现,两者都不能保存重复的数据)
    • HashSet: 无顺序
    • LinkedHashSet: 有顺序
  • SortedSet(接口)
  • TreeSet(SortedSet的实现类) --> 排序的元素需要实现Comparable接口,并重写compareTo(Object obj)方法

Map

  • HashMap和HashTable
    • HashMap: 1.线程不安全 2.轻量级 3.允许key或value是null
    • HashTable: 1.线程安全 2.重量级 3.不允许key或value是null
  • TreeMap --> 以红黑树数据结构实现,实现了SortedMap接口
  • Properties -->继承自Hashtable,线程安全,键值都是字符串

Queue

分如下两种

  • 阻塞式队列,队列满了以后再插入元素则会抛出异常,主要包括ArrayBlockQueue、PriorityBlockingQueue、LinkedBlockingQueue
  • 双端队列,支持在头、尾两端插入和移除元素,主要包括:ArrayDeque、LinkedBlockingDeque、LinkedList

工具类Arrays和Collections

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值