Java类HashSet常用API详解
程序员文章站
2022-10-03 16:15:01
HashSet - 测试类package HashSet_UtilityClass;import java.util.*;/** * HashSet测试类 */public class HashSetTest { public static void main(String[] args) { // 向集合中添加一个元素,若以存在该元素则不予添加 HashSet stuSet = new HashSet
HashSet - 测试类
package HashSet_UtilityClass;
import HashSet_UtilityClass.domain.Human;
import java.util.*;
/**
* HashSet测试类
*/
public class HashSetTest {
public static void main(String[] args) {
// 向集合中添加一个元素,若以存在该元素则不予添加
HashSet<String> stuSet = new HashSet<String>(Arrays.asList(new String[]{"李凡一", "邢晗铭", "刘佳琪", "骆蕾", "田颖", "由博文"}));
System.out.println("原集合中的元素:");
ForEachElementTraversal(stuSet);
System.out.println("\n向原集合中添加新元素:" + stuSet.add("陈小同"));
System.out.println("向原集合中添加重复元素:" + stuSet.add("邢晗铭"));
System.out.println("\n添加新元素后的集合元素:");
ForEachElementTraversal(stuSet);
System.out.println("------------------------------------------------------------");
// 清空此集合中的所有元素
stuSet.clear();
System.out.print("清空此集合中的所有元素:");
if (stuSet.size() != 0) {
ForEachElementTraversal(stuSet);
} else {
System.out.println("\n提示:此集合中无任何元素!");
}
System.out.println("------------------------------------------------------------");
// 返回当前集合实例的浅表副本(浅克隆)
HashSet<Integer> eleSet = new HashSet<Integer>();
System.out.println("父集合中的元素:");
RandomSetElement(eleSet);
System.out.println("克隆子集合中的元素:");
Object clone = eleSet.clone();
System.out.println(clone.toString());
// 返回当前集合实例的浅表副本(深克隆)
System.out.println("\n浅克隆父级元素与子级元素会发生联动修改:");
ExplainHashSetAPI.ShallowClone(); // 不在本类中的方法可以使用类名进行调用
System.out.println("\n深克隆父级元素与子级元素不会发生联动修改,对象独立:");
ExplainHashSetAPI.DeepClone();
System.out.println("------------------------------------------------------------");
// 判断当前集合中是否包含某个元素
HashSet<String> singerSet = new HashSet<String>(Arrays.asList(new String[]{"李荣浩", "邢晗铭", "熙二"}));
System.out.print("集合元素:");
ForEachElementTraversal(singerSet);
System.out.println("当前集合中是否包含元素“熙er”(true - 包含;false - 不包含):" + singerSet.contains("熙er"));
System.out.println("------------------------------------------------------------");
// 判断当前集合是否为空
System.out.print("集合元素:");
ForEachElementTraversal(singerSet);
System.out.println("当前集合是否为空(true - 空;false - 非空):" + singerSet.isEmpty());
System.out.println("------------------------------------------------------------");
// 创建迭代器对当前集合中的元素进行迭代
HashSet<Integer> numSet = new HashSet<Integer>(Arrays.asList(new Integer[]{10, 20, 30, 40, 50}));
Iterator<Integer> iterator = numSet.iterator();
System.out.println("创建迭代器对当前集合中的元素进行迭代:");
while (iterator.hasNext()) {
System.out.print(iterator.next() + " ");
}
System.out.println("\n------------------------------------------------------------");
// 判断集合中是否存在某元素,若存在则移除该元素
System.out.print("当前集合元素:");
WhileElementTraversal(numSet);
System.out.println("\n当前集合中是否存在元素 60,若存在则删除:" + numSet.remove(60));
System.out.println("当前集合中是否存在元素 10,若存在则删除:" + numSet.remove(10));
System.out.print("\n删除元素后的集合元素:");
WhileElementTraversal(numSet);
System.out.println("------------------------------------------------------------");
// 返回此集合的元素数量(长度)
System.out.println("stuSet集合的元素数量为:" + stuSet.size());
System.out.println("eleSet集合的元素数量为:" + eleSet.size());
System.out.println("singerSet集合的元素数量为:" + singerSet.size());
System.out.println("numSet集合的元素数量为:" + numSet.size());
}
/**
* 随机集合元素
*
* @param targetSet
*/
private static void RandomSetElement(HashSet<Integer> targetSet) {
Random rd = new Random();
for (int i = 0; i < 10; i++) {
targetSet.add(rd.nextInt(100) + 1);
}
WhileElementTraversal(targetSet);
}
/**
* while遍历集合元素
*
* @param targetSet
*/
private static void WhileElementTraversal(HashSet<Integer> targetSet) {
Object[] objects = targetSet.toArray();
for (Object obj : objects) {
System.out.print(obj + " ");
}
System.out.println();
}
/**
* foreach遍历集合元素
*
* @param targetSet
*/
private static void ForEachElementTraversal(HashSet<String> targetSet) {
Iterator<String> iterator = targetSet.iterator();
for (Iterator<String> items = iterator; items.hasNext(); ) {
System.out.print(items.next() + " ");
}
System.out.println();
}
}
HashSet - 测试类方法封装
package HashSet_UtilityClass;
import ArrayList_UtilityClass.domain.Singer;
import HashSet_UtilityClass.domain.Human;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
/**
* HashSet克隆方法封装
*/
public class ExplainHashSetAPI {
/**
* 集合元素浅克隆
*/
public static void ShallowClone() {
ArrayList<Human> orgList = new ArrayList<Human>();
orgList.add(new Human("邢晗铭", '女', 19));
orgList.add(new Human("李凡一", '女', 19));
Collection<Human> deepClone = new HashSet<Human>(orgList);
System.out.println("原集合中的Human对象:" + orgList.toString());
System.out.println("克隆原集合中的对象:" + deepClone.toString());
Iterator<Human> orgItor = orgList.iterator();
while (orgItor.hasNext()) {
orgItor.next().setName("李荣浩战队学员"); // 浅克隆会发生联动修改
}
System.out.println("原集合中的Human对象:" + orgList.toString());
System.out.println("克隆原集合中的对象:" + deepClone.toString());
} // ShallowClone方法结束
/**
* 集合元素深克隆
*/
public static void DeepClone() {
ArrayList<Human> orgList = new ArrayList<Human>();
orgList.add(new Human("邢晗铭", '女', 19));
orgList.add(new Human("李凡一", '女', 19));
Collection<Human> deepClone = new HashSet<Human>(orgList.size());
Iterator<Human> orgItor01 = orgList.iterator();
while (orgItor01.hasNext()) {
deepClone.add(orgItor01.next().clone()); // 调用Human类中重载的clone();
}
System.out.println("原集合中的Human对象:" + orgList.toString());
System.out.println("克隆原集合中的对象:" + deepClone.toString());
Iterator<Human> orgItor02 = orgList.iterator();
while (orgItor02.hasNext()) {
orgItor02.next().setName("李荣浩战队学员"); // 深克隆不会发生联动修改
}
System.out.println("原集合中的Human对象:" + orgList.toString());
System.out.println("克隆原集合中的对象:" + deepClone.toString());
} // DeepClone方法结束
}
HashSet - 方法封装所需的实体类
package HashSet_UtilityClass.domain;
/**
* Human实体类
*/
public class Human implements Cloneable {
private String name;
private char gender;
private int age;
public Human() {
}
public Human(String name, char gender, int age) {
this.name = name;
this.gender = gender;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Human{" +
"name='" + name + '\'' +
", gender=" + gender +
", age=" + age +
'}';
}
/**
* 定义clone();重载
* @return
*/
@Override
public Human clone() {
try {
Human result = (Human) super.clone();
return result;
} catch (CloneNotSupportedException e) {
throw new RuntimeException(e);
}
}
}
运行示范
原集合中的元素:
刘佳琪 李凡一 邢晗铭 田颖 骆蕾 由博文
向原集合中添加新元素:true
向原集合中添加重复元素:false
添加新元素后的集合元素:
刘佳琪 李凡一 邢晗铭 田颖 陈小同 骆蕾 由博文
------------------------------------------------------------
清空此集合中的所有元素:
提示:此集合中无任何元素!
------------------------------------------------------------
父集合中的元素:
96 65 34 35 19 37 55 75 44
克隆子集合中的元素:
[96, 65, 34, 35, 19, 37, 55, 75, 44]
浅克隆父级元素与子级元素会发生联动修改:
原集合中的Human对象:[Human{name='邢晗铭', gender=女, age=19}, Human{name='李凡一', gender=女, age=19}]
克隆原集合中的对象:[Human{name='李凡一', gender=女, age=19}, Human{name='邢晗铭', gender=女, age=19}]
原集合中的Human对象:[Human{name='李荣浩战队学员', gender=女, age=19}, Human{name='李荣浩战队学员', gender=女, age=19}]
克隆原集合中的对象:[Human{name='李荣浩战队学员', gender=女, age=19}, Human{name='李荣浩战队学员', gender=女, age=19}]
深克隆父级元素与子级元素不会发生联动修改,对象独立:
原集合中的Human对象:[Human{name='邢晗铭', gender=女, age=19}, Human{name='李凡一', gender=女, age=19}]
克隆原集合中的对象:[Human{name='邢晗铭', gender=女, age=19}, Human{name='李凡一', gender=女, age=19}]
原集合中的Human对象:[Human{name='李荣浩战队学员', gender=女, age=19}, Human{name='李荣浩战队学员', gender=女, age=19}]
克隆原集合中的对象:[Human{name='邢晗铭', gender=女, age=19}, Human{name='李凡一', gender=女, age=19}]
------------------------------------------------------------
集合元素:李荣浩 邢晗铭 熙二
当前集合中是否包含元素“熙er”(true - 包含;false - 不包含):false
------------------------------------------------------------
集合元素:李荣浩 邢晗铭 熙二
当前集合是否为空(true - 空;false - 非空):false
------------------------------------------------------------
创建迭代器对当前集合中的元素进行迭代:
50 20 40 10 30
------------------------------------------------------------
当前集合元素:50 20 40 10 30
当前集合中是否存在元素 60,若存在则删除:false
当前集合中是否存在元素 10,若存在则删除:true
删除元素后的集合元素:50 20 40 30
------------------------------------------------------------
stuSet集合的元素数量为:0
eleSet集合的元素数量为:9
singerSet集合的元素数量为:3
numSet集合的元素数量为:4
本文地址:https://blog.csdn.net/qq_44965393/article/details/107593238