java Comparable使用案例(compareTo)
2017-08-14 08:27
344 查看
List集合练习:
自定义类型User,包含2个属性 name和age
把多个User对象存储到List集合中。
把List集合中的元素按照年龄从小到大排列,如果年龄相等,(可选)按照姓名的字母顺序降序排列。
删除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 + "]"; } }
相关文章推荐
- compareTo函数使用-Comparable为例
- Java POI 操作Excel总结笔记--使用配置和使用案例篇
- 案例11--使用javabean
- Java中Object的使用:重载equals、hashCode及实现compareTo
- java orion ssh scp 使用案例
- 【Java学习笔记】Comparable接口的实现和使用
- Java计时器Timer 使用 完整案例(转)
- 普通java类(排序)实现Comparable接口重写CompareTo方法
- JAVA中常用接口的介绍及使用示例:java.lang.Comparable
- java 枚举类的简单介绍及使用枚举类的内部类编写的星期几的小案例
- JAVA comparable接口的使用方法
- Java Comparable<T>::compareTo(T arg)
- JAVA中常用接口的介绍及使用示例:java.lang.Comparable
- JAVA定时调度框架Quartz使用案例
- Java容器之Comparable接口的使用
- 使用Java操作LDAP案例
- 使用java做屏幕监控案例源代码
- 在Android上使用LocalSocket实现上层Java和底层C++的通信案例
- Java中的compareTo()函数用法-Comparable
- 普通java类(排序)实现Comparable接口重写CompareTo方法