package com.wzy.list;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet; class Student1 implements Comparable{
private Integer id;
private String name; public Student1(String name,Integer id) {
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "name:"+name+"; id:"+id;
}
@Override
public int compareTo(Object o) {
if(this.id > ((Student1)o).id) {
return ;
}else if(this.id < ((Student1)o).id) {
return -;
}else{
return this.name.compareTo(((Student1)o).name);
} }
} class Student2{
private Integer id;
private String name; public Student2(String name,Integer id) {
this.id = id;
this.name = name;
} @Override
public int hashCode() {
final int prime = ;
int result = ;
result = prime * result + ((id == null) ? : id.hashCode());
result = prime * result + ((name == null) ? : name.hashCode());
return result;
} @Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student2 other = (Student2) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
} @Override
public String toString() {
return "Student2 [id=" + id + ", name=" + name + "]";
} }
public class Test02 {
public static void main(String[] args) {
/**
* TreeSet和HashSet存入对象时,不会自动去重操作
*
* TreeSet去掉重复对象,基于Comparable接口实现
* HashSet去掉重复对象,基于equals和hashCode实现
* TreeSet可以对象排序,hashSet不可以
*
* 如果存入的不是new出来的对象,
* 而是String或int类型,可以直接使用,不必实现上述操作
* **/ //TreeSet存入对象实例
Set<Student1> stu1 = new TreeSet<Student1>();
stu1.add(new Student1("aa",));
stu1.add(new Student1("bb",));//id重复
stu1.add(new Student1("dd",));
stu1.add(new Student1("cc",));
stu1.add(new Student1("aa",));//对象重复
Iterator s = stu1.iterator();
while(s.hasNext()) {
System.out.println(s.next());
} //HashSet存入对象实例
Set<Student2> stu2 = new HashSet<Student2>();
stu2.add(new Student2("aa",));
stu2.add(new Student2("bb",));
stu2.add(new Student2("cc",));
stu2.add(new Student2("dd",));
stu2.add(new Student2("ee",));
stu2.add(new Student2("aa",)); Iterator i = stu2.iterator();
while(i.hasNext()) {
System.out.println(i.next());
} //TreeSet存入普通字符串
Set set1 = new TreeSet();
set1.add("a");
set1.add("aa");
set1.add("d");
set1.add("b");
set1.add("c");
//[a, aa, b, c, d] TreeSet已经自动排序好了
System.out.println(set1); //HashSet存入普通字符串
Set set2 = new HashSet();
set2.add("a");
set2.add("aa");
set2.add("d");
set2.add("c");
set2.add("b");
//[aa, a, b, c, d] HashSet不会排序
System.out.println(set2);
}
}

最新文章

  1. Jenkins的一个bug-同时build一个项目两次导致失败
  2. HashMap的key可以是可变的对象吗???
  3. libevent
  4. HackerRank &quot;Playing with numbers&quot;
  5. Java中浮点数的基础知识
  6. asp.net:录入数据库的中文变问号
  7. 客户端session与服务端session
  8. Notes系统安全日志
  9. 错误: libstdc++.so.6: cannot open shared object file: No such file or directory
  10. 201521123072《Java程序设计》第6周学习总结
  11. 架构师必备软件:安装Dubbo注册中心(Zookeeper-3.4.6)
  12. CSS3中结构伪类选择器——root、not、empty、target选择器
  13. git基本使用(搭建Git服务器)
  14. 20ViewPager demo1,2:接收ViewPager展示View的使用
  15. [LOJ10121] 与众不同
  16. (四)Knockout 表单
  17. 4Linux环境变量、Vim、Shell脚本
  18. JDBC学习笔记之SQLException介绍
  19. java连接mysql的过程
  20. 【转】Python中的字符串与字符编码

热门文章

  1. 将GridView数据导入到excel,并提供下载
  2. sql语句查询
  3. 转载:《TypeScript 中文入门教程》 6、命名空间
  4. Java基础学习总结——Java对象的序列化和反序列化
  5. token详解(转载)
  6. [连载]《C#通讯(串口和网络)框架的设计与实现》-3.设备驱动的设计
  7. 使用java操作MongoDB
  8. jquery给div的innerHTML赋值
  9. H5中的touch事件
  10. Wireshark查看https的通讯