1. 集合
1.1 Java 集合概述
- Java集合类存放于 java.util 包中,是一个用来存放对象的容器
- 集合只能存放对象。比如你存一个 int 型数据 1放入集合中,其实它是自动转换成 Integer 类后存入的,Java中每一种基本类型都有对应的引用类型
- 集合存放的是多个对象的引用,对象本身还是放在堆内存中
- 集合可以存放不同类型,不限数量的数据类型
- Java 集合可分为 Set、List 和 Map 三种大体系
Set:无序、不可重复的集合
List:有序,可重复的集合
Map:具有映射关系的集合
1.2 HashSet
- HashSet 是 Set 接口的典型实现,大多数时候使用 Set 集合时都使用这个实现类。我们大多数时候说的set集合指的都是HashSet
- HashSet 按 Hash 算法来存储集合中的元素,因此具有很好的存取和查找性能
- HashSet 具有以下特点:
不能保证元素的排列顺序
不可重复
HashSet 不是线程安全的
集合元素可以使 null
- HashSet 集合判断两个元素相等的标准:两个对象通过 equals() 方法比较相等,并且两个对象的 hashCode() 方法返回值也相等。
public class HashCodeDemo {
public static void main(String[] args) {
//定义一个集合Set
Set s = new HashSet();
Set<Object> set = new HashSet<Object>();//这种和上面的定义方式等价,可以存任意类型的数据
//想集合中添加元素
s.add("a");
s.add("b");
s.add("c");
s.add("d");
s.add("d");//不可重复性
System.out.println(s);//[a, b, c, d]
//判断元素是否在集合中
System.out.println(s.contains("b"));//true
System.out.println(s.contains("e"));//false
//使用Iterator遍历集合
Iterator it = s.iterator();
while(it.hasNext()) {//如果集合有下一个元素,就执行
System.out.println(it.next());//打印下一个元素
}
//使用for each遍历集合
for(Object obj:s) {//将集合中每个元素取出来,赋值给obj,直到循环集合中的所有元素
System.out.println(obj);
}
System.out.println(s.size());//4
//删除元素
s.remove("c");
//集合大小
System.out.println(s.size());//3
//泛型:如果想要集合只能存同样类型的对象,可以使用泛型
Set<String> st = new HashSet<String>();//如果指定string为集合的泛型,就不能存string类型之外的数据了
st.add("ab");
//st.add(1);//不可传入数字,只能传入string类型数据
}
}