如何在java里面对Object的类型值进行一个大小的比较
答案:2 悬赏:20 手机版
解决时间 2021-03-19 16:15
- 提问者网友:寂寞梧桐
- 2021-03-19 05:51
如何在java里面对Object的类型值进行一个大小的比较
最佳答案
- 五星知识达人网友:深街酒徒
- 2021-03-19 06:12
这个类是什么样的类,比较类的对象,一般比较的是对象的属性,这样的话就可以在类里面写个CompareTo(XXXX)方法,把两个对象的属性按你想要的规则进行比较就行了,返回值的话建议返回-1,0,1
全部回答
- 1楼网友:野味小生
- 2021-03-19 07:30
作者:tao li
链接:https://www.zhihu.com/question/36897771/answer/69763955
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
java中类的比较一般有两种方法,一种就是类本身实现comparable这个接口,比如通过对用户的姓名进行比较排序:
package com.ailot.compare;
public class user implements comparable {
private string name;
private int age;
private string sex;
public user(string name,int age,string sex){
this.name = name;
this.age = age;
this.sex = sex;
}
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;
}
public string getsex() {
return sex;
}
public void setsex(string sex) {
this.sex = sex;
}
@override
public string tostring() {
return "user [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
@override
public int compareto(user u) {
// todo auto-generated method stub
int c = this.name.compareto(u.name);
if(c==0){
return 0;
}else if(c > 0){
return 1;
}else{
return -1;
}
}
}
test.java
package com.ailot.compare;
import java.util.arraylist;
import java.util.collections;
import java.util.list;
import java.util.random;
public class test {
public static void main(string[] args) {
list userlist = new arraylist();
for(int i=0;i<10;i++){
int s = new random().nextint(20);
user u = new user(s+"张三",i,"男");
userlist.add(u);
}
collections.sort(userlist);
for(user user : userlist){
system.out.println(user.tostring());
}
}
}
排序的话直接用 collections.sort( userlist ) ;就可以了。
作者:tao li
链接:https://www.zhihu.com/question/36897771/answer/69763955
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
另一种就是类没有实现comparable这个接口,这就需要自己新建一个比较的类,通过实现comparator来对类进行比较,还是对user类的姓名进行比较排序:
user.java
package com.ailot.compare;
public class user {
private string name;
private int age;
private string sex;
public user(string name,int age,string sex){
this.name = name;
this.age = age;
this.sex = sex;
}
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;
}
public string getsex() {
return sex;
}
public void setsex(string sex) {
this.sex = sex;
}
@override
public string tostring() {
return "user [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
}
usercompare.java
package com.ailot.compare;
import java.util.comparator;
public class usercompare implements comparator {
@override
public int compare(user u1, user u2) {
// todo auto-generated method stub
int c = u1.getname().compareto(u2.getname());
if(c == 0){
return 0;
}else if(c < 0){
return -1;
}else{
return 1;
}
}
}
test.java
package com.ailot.compare;
import java.util.arraylist;
import java.util.collections;
import java.util.list;
import java.util.random;
public class test {
public static void main(string[] args) {
list userlist = new arraylist();
for(int i=0;i<10;i++){
int s = new random().nextint(20);
user u = new user(s+"张三",i,"男");
userlist.add(u);
}
collections.sort(userlist,new usercompare());
for(user user : userlist){
system.out.println(user.tostring());
}
}
}
排序的话直接用 collections.sort(userlist,new usercompare());就可以了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯