Java集合概述

Java集合类存放于java.util包中,是一个用于存放对象的容器。

  1. 集合只能存放对象。比如你存放一个1到集合中,其实它是自动转换成Integer类后存入的,Java中每一种基本类型都有对应的应用类型。

  2. 集合存放的是多个对象的引用,对象本身还是存放在堆内存中。

  3. 集合可以存放不同类型,不限数量的数据类型

Java集合可以分为Set、List、Map三种大体系

  • Set:无序、不可重复的集合
  • List:有序、可重复的集合
  • Map:具有映射关系的集合

在JDK5之后,增加了泛型,Java集合可以记住容器中对象的数据类型

HashSet

HashSet是对Set接口的典型实现,大多数使用Set集合时都使用这个实现类。我们大多数时候说的Set集合指的都是HashSet

HashSet 按 Hash算法来储存集合中的元素,因此具有很好的存储和查找性能。

HashSet 具有以下特点:

  • 不能保证元素的排列顺序
  • 不可重复
  • HashSet 不是线程安全的
  • 集合元素可以使用 null

当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据hashCode值决定该对象在HashSet中的存储位置。

如果两个元素的equals()方法返回true,但它们的hashCode()返回值不相等,他们的hashSet将会把他们储存在不同的位置,但依然可以添加成功。