您的位置:首页 > 编程语言 > Java开发

java Comparable使用案例(compareTo)

2017-08-14 08:27 344 查看
List集合练习:

自定义类型User,包含2个属性 name和age

把多个User对象存储到List集合中。

把List集合中的元素按照年龄从小到大排列,如果年龄相等,(可选)按照姓名的字母顺序降序排列。

删除List集合中重复的元素。年龄和姓名相同就认为他们相同。

代码:
package work;

import java.util.ArrayList;

public class Work {

/**
* List集合练习:
*
* 1. 自定义类型User,包含2个属性 name和age 2. 把多个User对象存储到List集合中。 3.
* 把List集合中的元素按照年龄从小到大排列,如果年龄相等,(可选)按照姓名的字母顺序降序排列。
* 4.删除List集合中重复的元素。年龄和姓名相同就认为他们相同。
*
* @param args
*/
public static void main(String[] args) {

ArrayList<User> list = new ArrayList<>();
list.add(new User("张三", 11));

list.add(new User("赵柳", 55));
list.add(new User("张三", 11));
list.add(new User("李四", 22));
list.add(new User("张三", 99));
list.add(new User("老王", 22));
list.add(new User("李四", 88));
list.add(new User("李四", 22));
list.add(new User("王五", 77));
list.add(new User("张三", 11));
list.add(new User("陈楚生", 22));
for (int k = 0; k < list.size() - 1; k++) {
for (int i = 0; i < list.size() - 1 - k; i++) {
User source = list.get(i);
User target = list.get(i + 1);
int compareToUser = source.compareToUser(target);
if (compareToUser > 0) {
list.set(i, list.set(i + 1, list.get(i)));
}
}
}
for (User user : list) {
System.out.println(user);
}

// 删除重复元素
int tag = 0;//
4000
要比较的位置
while (tag < list.size()) {
User user = list.get(tag);
for (int i = tag + 1; i < list.size(); i++) {
if (user.equals(list.get(i))) {
list.remove(i--);
}
}
tag++;
}
System.out.println("******************************");
for (User user : list) {
System.out.println(user);
}
}

}


package work;

import java.text.Collator;

public class User {

@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}

/**
* 比较User的大小 根据age比较
*
* @param target
* @return if return 1 this比较大。-1反之亦然。0 则相等
*/
public int compareToUser(User target) {
if (this.age - target.age > 0) {
return 1;
}
if (this.age - target.age < 0) {
return -1;
}
return Collator.getInstance().compare(this.name, target.name);
}
//public int compareTo(Person o) {
//if (this.age==o.age) {
//return Collator.getInstance().compare(this.name, o.name);
//}
//return this.age-o.age;
//}
private String name;
private int 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;
}

public User(String name, int age) {
super();
this.name = name;
this.age = age;
}

@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
}

}





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: