Set容器的基本用法(Java)
Set具有无序不可重复的特点
因为与List同为Collection的继承类,都继承了Collection的方法,基本操作与List一样,友友们可以看上一期对List容器基本用法的详解,这里我们讲的主要是Set容器基于equals方法的不可重复条件。
Set不可重复的基础是equals方法可以通过重写equals方法来定义数据相同的条件。
1.建立Emp类,其中重写了equals方法和toString方法
package 集合Set; import java.util.Objects; public class Emp { private int id; private String ename; @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Emp emp = (Emp) o; return id == emp.id; } @Override public int hashCode() { return Objects.hash(id); } @Override public String toString() { return "Emp{" + "id=" + id + ", ename=" + ename + + }; } public Emp(int id, String ename) { this.id = id; this.ename = ename; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } }
2.按照类中定义的equals方法Set容器会自动去除重复的数据
package 集合Set; import java.util.HashSet; import java.util.Set; /** * Set和List * Set中原素没有重复 * 且是无序的 *基本方法和List一致因为Set和List都是Collection的子接口 *hashCode()获得对象的哈希值 * 哈希值,用来计算对象的存储位置; * 调用hashCode方法获得哈希值 * 通过哈希值得到地址 * 看地址上是否存在元素 * 如果存在调用equals方法 *不存在直接调用add方法 * * * * * LinkedHashSet 输入和输出的顺序相同 * */ public class study_01 { public static void main(String[] args) { // test01(); test02(); } //Set的常用方法还有两个容器之间的操作和List一样 private static void test01(){ //继承至Collection // 基本方法和List一致因为Set和List都是Collection的子接口 Set s=new HashSet<>(); s.add("hello"); s.add("word"); s.add("hello");//不会重复加入 System.out.println(s); } //set中不可重复的核心:equals方法 private static void test02(){ Emp e1=new Emp(1001,"赵宇晖"); Emp e2=new Emp(1002,"赵雪晨"); Emp e3=new Emp(1001,"王豪杰"); Set set =new HashSet<>(); set.add(e1); set.add(e2); set.add(e3); System.out.println(set); }
下一篇:
设计模式——抽象工厂