专栏首页Java患者Java基础知识(七)--集合

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值

本文分享自微信公众号 - Java患者(gh_3a16ffdedb6a),作者:Zero

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-05-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JAVA集合类基础知识

    把具有相同性质的一类东西汇聚成一个整体,就可以称为集合。一般数据存储结构分为以下几种:

    heasy3
  • Java基础知识点面试手册(基础知识+集合)

    如果再深究一点呢,我们可以看看上面测试类的输出结果,或许对多态会有更深层次的认识。猜一猜上面 的结果是什么。

    Java3y
  • Mysql基础知识合集(精美)

    还有一堆哈 。先用先查就好(现) 比如month addtime。。。。。

    CaesarChang张旭
  • python基础知识(三)set集合

    py3study
  • java面试知识要点汇总(基础和集合)

    反射机制是Java语言中一个非常重要的特性,它允许程序在运行时进行自我检查,同时也允许对其内部成员进行操作。反射机制提供的功能主要有:得到一个对象所属的类;获取...

    earthchen
  • C#基础知识系列十(集合)

      本节主要是来了解学习集合,以方便在程序编写时,什么地方该选用什么集合,让程序更健壮的运行起来。在学习了解集合之前,首先需要了解一些数据结构方面的知识。下面我...

    aehyok
  • Java基础知识总结(异常机制、集合、JUC、IO)

        3)、第三个是异常信息回答了为什么被抛出。Throwable是所有异常体系的顶级父类,包含了Error类和Exception类。从概念角度分析Java的...

    别先生
  • Java基础系列(四十七):集合之AbstractMap

    亲爱的读者们,以后我每周更新两篇,周一更新基础底层,周五框架实战,上次投票的结果是JVM,我会在周一这一档等到基础系列完结后进行更新,周五目前更新的是sprin...

    山禾说
  • JAVA基础知识

    Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。 Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。  Java 被设计成允许应用程...

    用户3003813
  • java基础知识

    Vector、Stack、HashTable、ConcurrentHashMap、Properties

    仇诺伊
  • Java基础——集合

    集合是java中提供的一种容器,可以用来存储多个数据,集合框架主要java.util 包中,存储结构可以分为两大类,分别是单列集合java.util.Colle...

    羊羽shine
  • 学习Java基础知识,打通面试关七

    用户2196435
  • java基础知识01

    正所谓万丈高楼平地起,有了扎实的基础才能进阶更深奥的课程,才能让你后面的走得更轻松,学Java亦是如此!所以千万不能忽略基础的重要性,下面一起来温习一下那些容易...

    贪挽懒月
  • java基础知识02

    1、String字符串: 字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中。用length()方法获取长度。

    贪挽懒月
  • java(一)基础知识

    西西嘛呦
  • Java基础知识(二)

    ​ 面向对象是一种现在最为流行的程序设计方法,几乎现在的所有应用都以面向对象为主了,最早的面向对象的概念实际上是由IBM提出的,在70年代的Sma...

    shimeath
  • Java基础知识(一)

    JRE: java Runtime Environment(java运行时环境)。即java程序的运行时环境,包含了java虚拟机,java基础类库。

    shimeath
  • Java基础知识(二)

    用户7386338
  • Java基础知识(三)

    用户7386338

扫码关注云+社区

领取腾讯云代金券