前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java基础知识(七)--集合

Java基础知识(七)--集合

作者头像
用户7386338
发布2021-05-13 11:34:47
4260
发布2021-05-13 11:34:47
举报
文章被收录于专栏:Java患者

集合

  • 数组和集合存储引用数据类型,存的都是地址值
  • 数组和集合的区别
    • 数组长度是固定的,不能自动增长
    • 集合的长度是可变的,可以根据元素的增加而增长
    • 数组既可以存储基本数据类型,又可以存储引用数据类型,基本数据类型存储的是值,引用数据类型存储的是地址值
    • 集合只能存储引用数据类型(对象),集合中也可以存储基本数据类型,但是在存储的时候会自动装箱变成对象
    • 区别1
    • 区别2

集合框架 Vector跟List的特点

  • ArrayList
    • 底层数据结构是数组,查询快,增删慢
    • 线程不安全,效率高
  • Vector
    • 相对ArrayList查询慢(线程安全)
    • 相对LinkedList增删慢(数组结构)
  • LinkedList
    • 底层数据结构是链表,查询慢,增删快
    • 线程不安全,效率高

泛型

泛型概述

  • 通过参数化类型来实现在同一份代码上操作多种数据类型的技术

泛型好处

  • 提高安全性(将运行期的错误转换到编译期)
  • 省去强转的麻烦

Set

HashSet原理

  • 当HashSet调用add()方法存储对象的时候,先调用对象的hashCode()方法得到一个哈希值,然后在集合中查找是否有哈希值相同的对象
    • 如果没有哈希值相同的对象就直接存入集合
    • 如果有哈希值相同的对象,就和哈希值相同的对象逐个进行equals()比较,比较结果为false就存入,true则不存
  • 将自定义类的对象存入HashSet去重复
    • 类中必须重写hashCode()和equals()方法
    • hashCode()属性相同的对象返回值必须相同,属性不同的返回值尽量不同
    • equals() 属性相同返回true,属性不同返回false。返回false的时候存储

LinkedHashSet

  • 可以保证怎么存就怎么取

TreeSet

  • 特点 TreeSet是用来排序的,可以指定一个顺序,对象存入之后会按照指定的顺序排列
  • 自然顺序(Comparable)
    • TreeSet类的add()方法中会把存入的对象提升为Comparable类型
    • 调用对象的compareTo()方法和集合中的对象比较
    • 根据compareTo()方法返回的结果进行存储
  • 比较器顺序(Comparator)
    • 创建TreeSet的时候制定一个Comparator
    • 如果传入了Comparator的子类对象,那么TreeSet就会按照比较器中的顺序排序
    • add()方法内部会自动调用Comparator接口中的compare()方法排序
    • 调用的对象是compare方法的第一个参数,集合中的对象是compare方法的第二个参数
  • 两种方式的区别
    • TreeSet构造函数什么都不传,默认按照类中Comparable的顺序
    • TreeSet如果传入Comparator,就优先按照Comparator

Map

map接口概素

  • 将键映射到值的对象
  • 一个映射不能包含重复的键
  • 每个键最多只能映射到一个值

Map接口跟Collection接口的不同

  • Map是双列的,Collection是单列的
  • Map的键唯一,Collection的子体系Set是唯一的
  • Map集合的数据结构值针对键有效,跟值无关;Collection集合的数据结构是针对元素有效

HashMap跟Hashtable的区别

  • Hashtable是JDK1.0版本出现的,是线程安全的,效率低
  • HashMap是JDK1.2版本出现的,是线程不安全的,效率高
  • Hashtable不可以存储null键跟null值,HashMap可以存储null键跟null值
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java患者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 集合
    • 集合框架 Vector跟List的特点
    • 泛型
      • 泛型概述
        • 泛型好处
        • Set
          • HashSet原理
            • LinkedHashSet
              • TreeSet
              • Map
                • map接口概素
                  • Map接口跟Collection接口的不同
                    • HashMap跟Hashtable的区别
                    相关产品与服务
                    对象存储
                    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档