Set集合
一.集合的特性
Set集合与Collection的用法基本相同
但是Set集合通常不会记住元素的添加顺序,并且Set集合不允许包含相同的元素.
例如:
public static void setDemo(){
HashSet<String> setData = new HashSet<>();
setData.add("1");
setData.add("1");
setData.add("2");
setData.add("2");
System.out.println("集合的元素为:"+setData);
}
执行结果为集合的元素为:[1, 2]
二.利用Set集合中不允许包含相同元素的特性可以实现去除重复的操作
示例1(对数组集合元素去除重复)
public static void setDemo2(){
String[] stringData = {"1","2","3","1","2","3","4"};
//将数组的元素添加到集合中
HashSet<String> setData = new HashSet<>();
for(int i = 0;i<stringData.length;i++){
setData.add(stringData[i]);
}
System.out.println("集合的元素为:"+setData);
}
运行结果为:集合的元素为:[1, 2, 3, 4]
示例2(对List集合元素去除重复)
public static void setDemo3() {
ArrayList<String> listData = new ArrayList<>();
listData.add("1");
listData.add("1");
listData.add("2");
listData.add("2");
listData.add("3");
listData.add("4");
System.out.println("ArrayList的集合元素为:" + listData);
// 将ArrayList的集合元素添加到Set集合中
HashSet<String> hashSet = new HashSet<>();
hashSet.addAll(listData);
System.out.println("HashSet集合的元素为:"+hashSet);
}
运行结果:ArrayList的集合元素为:[1, 1, 2, 2, 3, 4]
HashSet集合的元素为:[1, 2, 3, 4]
三.HashSet的介绍
HashSet是按Hash算法来存储集合中的元素,因此具有很好的存取和查找性能.
HashSet的特点
不能保证集合的排列顺序,顺序可能和添加顺序不同,顺序也有可能发生变化.
集合的元素可以是null
当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据
该hashCode值决定该对象在HashSet中的存储位置.
HashSet集合判断两个集合元素是否相等的标准是两个对象通过equals()方法比较相等,并且两个对象的hashCode()方法的返回值也相等(
也就是说如果两个对象通过equals()方法比较返回true,但如果他们的hashcode值不相等,那么HashSet依然将他们放在不同的存储位置上,
他们依然可以添加成功).
注意:当把一个对象放入HashSet集合中时,如果需要重写equals()方法,那么也应该重写hashCode()方法.
一.集合的特性
Set集合与Collection的用法基本相同
但是Set集合通常不会记住元素的添加顺序,并且Set集合不允许包含相同的元素.
例如:
public static void setDemo(){
HashSet<String> setData = new HashSet<>();
setData.add("1");
setData.add("1");
setData.add("2");
setData.add("2");
System.out.println("集合的元素为:"+setData);
}
执行结果为集合的元素为:[1, 2]
二.利用Set集合中不允许包含相同元素的特性可以实现去除重复的操作
示例1(对数组集合元素去除重复)
public static void setDemo2(){
String[] stringData = {"1","2","3","1","2","3","4"};
//将数组的元素添加到集合中
HashSet<String> setData = new HashSet<>();
for(int i = 0;i<stringData.length;i++){
setData.add(stringData[i]);
}
System.out.println("集合的元素为:"+setData);
}
运行结果为:集合的元素为:[1, 2, 3, 4]
示例2(对List集合元素去除重复)
public static void setDemo3() {
ArrayList<String> listData = new ArrayList<>();
listData.add("1");
listData.add("1");
listData.add("2");
listData.add("2");
listData.add("3");
listData.add("4");
System.out.println("ArrayList的集合元素为:" + listData);
// 将ArrayList的集合元素添加到Set集合中
HashSet<String> hashSet = new HashSet<>();
hashSet.addAll(listData);
System.out.println("HashSet集合的元素为:"+hashSet);
}
运行结果:ArrayList的集合元素为:[1, 1, 2, 2, 3, 4]
HashSet集合的元素为:[1, 2, 3, 4]
三.HashSet的介绍
HashSet是按Hash算法来存储集合中的元素,因此具有很好的存取和查找性能.
HashSet的特点
不能保证集合的排列顺序,顺序可能和添加顺序不同,顺序也有可能发生变化.
集合的元素可以是null
当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据
该hashCode值决定该对象在HashSet中的存储位置.
HashSet集合判断两个集合元素是否相等的标准是两个对象通过equals()方法比较相等,并且两个对象的hashCode()方法的返回值也相等(
也就是说如果两个对象通过equals()方法比较返回true,但如果他们的hashcode值不相等,那么HashSet依然将他们放在不同的存储位置上,
他们依然可以添加成功).
注意:当把一个对象放入HashSet集合中时,如果需要重写equals()方法,那么也应该重写hashCode()方法.