集合框架之Set接口
方法:全部继承自Collection中的方法
package com.oop.demo11; import java.util.HashSet; import java.util.Iterator; import java.util.Set; /** * 测试set接口的使用 */ public class Demo07 { public static void main(String[] args) { //创建集合 Set<String> set=new HashSet<>(); //1.添加数据 set.add("苹果"); set.add("华为"); set.add("小米"); System.out.println("数据个数:"+set.size()); System.out.println(set.toString()); System.out.println("================="); //2.删除元素 set.remove("小米"); System.out.println(set.toString()); System.out.println("================="); //3.遍历(重点) //3.1增强for System.out.println("========增强for======="); for (String string:set ) { System.out.println(string); } //3.2使用迭代器 System.out.println("========使用迭代器======="); Iterator<String> it = set.iterator(); while (it.hasNext()){ System.out.println(it.next()); } //判断 System.out.println("========判断======="); System.out.println(set.contains("华为")); System.out.println(set.isEmpty()); } }
HashSet(重点):
package com.oop.demo11; import java.util.HashSet; import java.util.Iterator; /** * HashSet集合的使用 * 存储结构:哈希表(数组+链表+红黑树) */ public class Demo08 { public static void main(String[] args) { //创建集合 HashSet<String> hashSet=new HashSet<String>(); //1.添加元素 hashSet.add("aaa"); hashSet.add("bbb"); hashSet.add("ccc"); hashSet.add("ddd"); System.out.println("元素个数:"+hashSet.size()); System.out.println(hashSet.toString()); System.out.println("============"); //2.删除元素 hashSet.remove("aaa"); System.out.println("删除之后:"+hashSet.size()); System.out.println(hashSet.toString()); System.out.println("====增强for==="); //3.遍历操作 //3.1增强for for (String string:hashSet ) { System.out.println(string); } System.out.println("====迭代器==="); Iterator<String> it=hashSet.iterator(); while (it.hasNext()){ System.out.println(it.next()); } System.out.println("====判断==="); System.out.println(hashSet.contains("bbb")); System.out.println(hashSet.isEmpty()); } }
TreeSet:
-
基于排列顺序实现元素不重复
-
实现了SortedSet接口,对集合元素自动排序
-
元素对象的类型必须实现Comparable接口,指定排序规则
-
通过ComparableTo方法确定是否为重复元素
package com.oop.demo11; import java.util.Iterator; import java.util.TreeSet; /** * TreeSet的使用 * 存储结构:红黑树 */ public class Demo09 { public static void main(String[] args) { //创建集合 TreeSet<String> treeSet=new TreeSet<>(); //1.添加元素 treeSet.add("aaa"); treeSet.add("bbb"); treeSet.add("ccc"); treeSet.add("ddd"); System.out.println("元素个数:"+treeSet.size()); System.out.println(treeSet.toString()); System.out.println("================="); //2.删除元素 treeSet.remove("aaa"); System.out.println("删除之后:"+treeSet.size()); System.out.println(treeSet.toString()); System.out.println("=======增强for遍历========"); //3.1增强for遍历 for (String string:treeSet ) { System.out.println(string); } System.out.println("=======迭代器遍历========"); //3.2迭代器遍历 Iterator<String> it=treeSet.iterator(); while (it.hasNext()){ System.out.println(it.next()); } System.out.println("=======判断========"); //4.判断 System.out.println(treeSet.contains("bbb")); System.out.println(treeSet.isEmpty()); } }
package com.oop.demo11; import com.oop.demo11.Student; import java.util.HashSet; import java.util.Iterator; import java.util.TreeSet; /** * 使用TreeSet保存数据 * 存储结构:红黑树 * 要求:元素必须实现Comparable接口 */ public class Demo10 { public static void main(String[] args) { //创建集合 TreeSet<Student> students=new TreeSet<>(); //1.添加元素 Student s1 = new Student("刘德华",20); Student s2 = new Student("郭富城",22); Student s3 = new Student("梁朝伟",18); students.add(s1); students.add(s2); students.add(s3); System.out.println("元素个数"+students.size()); System.out.println(students.toString()); System.out.println("============"); //2.删除元素 students.remove(s1); System.out.println(students.size()); System.out.println("============"); //3.遍历元素 //3.1增强for System.out.println("=====增强for====="); for (Student student:students ) { System.out.println(student.toString()); } System.out.println("=====迭代器====="); Iterator it=students.iterator(); while (it.hasNext()){ System.out.println(it.next()); } System.out.println("=====判断====="); System.out.println(students.contains(s2)); System.out.println(students.isEmpty()); } }
package com.oop.demo11;
import java.util.Objects;
public class Student implements Comparable<Student> {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public String getName () {
return name;
}
public void setName (String name){
this.name = name;
}
public int getAge () {
return age;
}
public void setAge ( int age){
this.age = age;
}
@Override
public boolean equals(Object obj) {
//1.判断是不是同一个对象
if (this == obj)
return true;
//2.判断是否为空
if (obj == null)
return false;
//3.判断是否是Student类型
if (obj instanceof Student) {
Student s = (Student) obj;
//4.比较属性
if (this.name.equals(s.getName()) && this.age == s.getAge()) {
return true;
}
}
//5.不满足条件
return false;
}
@Override
public int compareTo(Student o) {
int n1=this.getName().compareTo(o.getName());
int n2=this.age-o.getAge();
return n1==0?n2:n1;
}
}

package com.oop.demo11; import com.oop.demo11.Student; import java.util.Comparator; import java.util.TreeSet; /** * TreeSet集合的使用 * Comparator:实现定制比较 * Comparable:可比较的 */ public class Demo11 { public static void main(String[] args) { //创建集合,并指定比较规则 TreeSet<Student> students=new TreeSet<>(new Comparator<Student>() { @Override public int compare(Student o1, Student o2) { int n1=o1.getAge()-o2.getAge(); int n2=o1.getName().compareTo(o2.getName()); return n1==0?n2:n1; } }); Student s1 = new Student("liu德华",20); Student s2 = new Student("guo富城",22); Student s3 = new Student("liang朝伟",18); Student s4 = new Student("zhang学友",18); students.add(s1); students.add(s2); students.add(s3); students.add(s4); System.out.println(students.toString()); } } package com.oop.demo11; import java.util.Objects; public class Student implements Comparable<Student> { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'+"\n"; } public String getName () { return name; } public void setName (String name){ this.name = name; } public int getAge () { return age; } public void setAge ( int age){ this.age = age; } @Override public boolean equals(Object obj) { //1.判断是不是同一个对象 if (this == obj) return true; //2.判断是否为空 if (obj == null) return false; //3.判断是否是Student类型 if (obj instanceof Student) { Student s = (Student) obj; //4.比较属性 if (this.name.equals(s.getName()) && this.age == s.getAge()) { return true; } } //5.不满足条件 return false; } @Override public int compareTo(Student o) { int n1=this.getName().compareTo(o.getName()); int n2=this.age-o.getAge(); return n1==0?n2:n1; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!