java集合比较大小_java集合判断对象相等和比较大小的方法

标题:java集合判断对象相等和比较大小的方法 判断Java集合对象相同:

(1)判断equals是否返回true;

(2)判断hascode是否相等;package edu.xalead; import java.util.HashSet; public class Test { /** * 相同的哈希码,对象相同 */ public static void main(String[] args) { HashSet q = new HashSet(); q.add("hello"); q.add("hello"); q.add("hello"); System.out.println(q.size()); q = new HashSet(); q.add(13); q.add(13); q.add(13); System.out.println(q.size()); q = new HashSet(); q.add(new Student("KAAK",143536,'女')); q.add(new Student("KAAK",143536,'女')); q.add(new Student("KAAK",143536,'女')); System.out.println(q.size()); HashSet w = new HashSet(); w.add(new Student1("jiaja",143536,'男')); w.add(new Student1("jiaja",143536,'男')); w.add(new Student1("jiaja",143536,'男')); System.out.println(w); System.out.println(w.size()); } // c = new HashSet(); // c.add(new Student(222,"旺达")); // c.add(new Student(222,"旺达")); // c.add(new Student(222,"旺达")); // System.out.println(c.size()) }

在Student1未继承Object或未实现接口Comparable时,w.size=3,因为每new一次Student1对象,地址不同.

测试结果:

9dd88bd70afe4aea2236efc322e2fc8a.png

package edu.xalead; import java.util.Objects; public class Student1 extends Object { private String name; private int id; @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Student1 student1 = (Student1) o; return id == student1.id && sex == student1.sex && Objects.equals(name, student1.name); } @Override public int hashCode() { return Objects.hash(name, id, sex); } private char sex; // @Override // public boolean equals(Object obj) { // if (obj instanceof Student1){ //obj是Student1的示例 // Student1 s = (Student1) obj; // if(s.id == this.id && // s.name.equals(this.name)&& // s.sex==this.sex) // return true; // } // return false; //} // // public int hashCode(){ // return new Integer(id).hashCode() + name.hashCode() + new Character(sex).hashCode(); // } @Override public String toString() { return "Student1{" + "name='" + name + '\'' + ", id=" + id + ", sex=" + sex + '}'; } public Student1(String name, int id, char sex) { this.name = name; this.id = id; this.sex = sex; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } }

2.java集合比较大小:

(1) 继承接口Comparable的compareTo方法. package edu.xalead; import java.util.Objects; public class Student implements Comparable{ private String name; private int id; private char sex; @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", id=" + id + ", sex=" + sex + '}'; } public Student(String name, int id, char sex) { this.name = name; this.id = id; this.sex = sex; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } // public boolean equals(Object obj){ // if(obj instanceof Student){ //前面的引用是否是后面对象的示例 // Student s = (Student) obj; // if(s.id==this.id // && s.name.equals(this.name) // 字符串也是对象,对象比较用equals // && s.sex==this.sex) // return true; // } // return false; // } // public int hascode(){ // return new Integer(id).hashCode() // + name.hashCode() + // new Character(sex).hashCode(); @Override //equals值返回true public boolean equals(Object o) { //比较对象内容是否相同 if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Student student = (Student) o; return id == student.id && sex == student.sex && Objects.equals(name, student.name); } @Override //hashCode 相同 public int hashCode() { return Objects.hash(name, id, sex); } @Override //排序的接口 compareTo public int compareTo(Object o) { //对象类型引用 o是Object类型的 可引用调用自己的方法 if(o instanceof Student){ // o是student的实例化 Student s = (Student) o; //强行类型转换 // if(this.id >s.id) { //this是指向对象的 // return 1; // } else if (this.id s.id) { return -1; } else if (this.id

测试: package edu.xalead; import java.util.Iterator; import java.util.TreeSet; public class Test2 { public static void main(String[] args) { TreeSet s = new TreeSet(); //放进去的元素已排好序 s.add(19); s.add(16); s.add(14); s.add(15); //迭代 Iterator iter = s.iterator(); while(iter.hasNext()){ System.out.println(iter.next()); } s = new TreeSet(); s.add(new Student("hany",143554,'男')); s.add(new Student("gdhbf",546465,'女')); s.add(new Student("fegdvff",353475,'男')); iter = s.iterator(); while(iter.hasNext()){ System.out.println(iter.next()); } } }

测试结果:

74d561cb170b40b3e9dd7213d1849af9.png

Set和Collection遍历常用迭代器iterator

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值