JAVA集合

Collection 接口  集合顶层接口
    --List
        元素允许重复,是有序的(存储和取出顺序一致),拥有下标索引的特点
        --ArrayList
            底层数据结构是数组,查询快,增删慢
            线程不安全的,效率高
        --Vector
            底层数据结构是数组,查询快,增删慢
            线程是安全的,效率低 (即使是线程安全的,我们将来不会去使用,因为有更好的去替代)
            用Collections中带synchronized方法将不安全的集合转成安全的集合
        --LinkedList
            底层数据结构是双链表,查询慢,增删快
            线程是不安全的,效率高
    --Set
        元素唯一,无序
        --HashSet
            底层数据结构是哈希表,哈希表保证元素的唯一性
            但是当存储的是自定义对象的时候,要重写hashCode()和equals()方法
            --LinkedHashSet
                底层数据结构是哈希表和链表,哈希表保证元素的唯一性,链表保证元素的有序(存储和取出顺序一致)
        --TreeSet
            底层数据结构是红黑树,遍历的时候中序遍历
            自然排序 元素的数据类型的类要实现Comparable<T>,重写compareTo()方法
            比较器排序
                自定义一个类实现Comparator<T>接口,重写compare()方法
                匿名内部类的形式进行构造方法传参,重写compare()方法

Map 接口
元素是由一个一个键值对组成,键不允许重复,值允许重复
    --HashMap
        底层数据结构是哈希表,保证了元素的唯一(指的是键的唯一性),元素是无序
        当键是自定义类型的时候,要想保证唯一性,就必须重写hashCode()方法和equals()方法
        --LinkedHashMap
            底层数据结构是哈希表和链表
            哈希表保证的是元素的唯一性
            链表保证的是元素有序(指的是存储和取出的顺序一致)
    --TreeMap
        底层数据结构是红黑树
        排序针对于键来说的
            自然排序
            比较器排序
                自定义一个类实现Comparator<T>接口,重写compare()方法
                匿名内部类的形式进行构造方法传参,重写compare()方法

将来开发的时候用谁呢?
    1、元素的组成是单个还是成对,如果是单个,使用Collection下面的集合,如果是成对出现的,使用Map下面的集合
    2、元素允许重复吗?
        允许:List
        不允许:Set
    3、元素需要排序吗?
        需要:TreeSet或者TreeMap
        不需要:ArrayList等
    4、将来查找的功能多吗?
        多,用底层是数组的集合
    5、将来增删操作多吗?
        多,用底层是链表的集合

如果你什么都不知道,用ArrayList。推荐具体情况具体选择。

注意:
    增强for循环只能作用于数组和Collection集合,不适用于Map集合
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值