java的Collection或Map实现元素自动排序
来源:互联网 发布:cepii世界贸易数据库 编辑:程序博客网 时间:2024/06/05 05:02
java的Collection或Map如何使他们里面的元素自动排序呢,
虽然是老早学习的java内容了,想不到面试官也稍微问了我一下,那时候没复习到这,只是答一半漏一半。
现在做个备忘。
* 需求:
* 往自定义集合中存入对象,按先年龄后姓名的从小到大的方式排序。
*
* 思路:
* 方法一:需要通过对象所在类实现Comparable接口,再复写其中compareTo方法
* 方法二:当元素自身不具备比较性,或者具备的比较性不是所需要的,可使用比较器Comparator
* 覆盖里面的compare方法。
*
* 此示范中两种方法都包含了*/
import java.util.*;
/*
public class TreeSetTest {
public static void main(String[] args) {
TreeSet ts = new TreeSet();
ts.add("adcd");
ts.add("accd");
ts.add("Adcd");
Iterator it = ts.iterator();
while(it.hasNext())
System.out.println(it.next());
}
}
*/
public class TreeSetTest {
public static void main(String[] args) {
TreeSet ts = new TreeSet(new MyCompare());
ts.add(new Teacher("lisi01",11));
ts.add(new Teacher("lisi02",12));
ts.add(new Teacher("lisi03",13));
ts.add(new Teacher("lisi03",11));
ts.add(new Teacher("lisi01",11));
Iterator it = ts.iterator();
while(it.hasNext()) {
Teacher t =(Teacher)it.next();
System.out.println(t.getName()+":::"+t.getAge());
}
}
}
class MyCompare implements Comparator { //方法二:排序:先姓名后年龄。
public int compare(Object o1,Object o2) {
Teacher t1 = (Teacher)o1;
Teacher t2 = (Teacher)o2;
int num = t1.getName().compareTo(t2.getName());
if(num==0) {
/*
if(t1.getAge()>t2.getAge())
return 1;
if(t1.getAge()==t2.getAge())
return 0;
else
return -1;
*/
//因为整数也有自己的比较方法,可以用以下方法替代上面方法。
return new Integer(t1.getAge()).compareTo(new Integer(t2.getAge()));
//此处将整数类型封装成Integer对象得以调用compareTo方法。
}
return num;
}
}
class Teacher implements Comparable {
private String name;
private int age;
private Teacher s;
Teacher(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public int compareTo(Object obj) { //方法一:排序:先年龄后姓名
if(!(obj instanceof Teacher))
throw new RuntimeException("该对象不是老师");
else
s = (Teacher)obj;
if(this.age>s.age)
return 1;
else if(this.age==s.age)
return this.name.compareTo(s.name); //此处调用compareTo方法是字符串原有的。
else
return -1;
}
}
阅读全文
0 0
- java的Collection或Map实现元素自动排序
- java实现对map,collection单个或多个排序
- Java实现对map或hashmap排序的三种方法或思路
- Java中常用数据结构的实现类 Collection和Map
- Java中常用数据结构的实现类 Collection和Map
- Java中常用数据结构的实现类 Collection和Map
- Java中常用数据结构的实现类 Collection和Map
- Java中常用数据结构的实现类 Collection和Map
- Java中常用数据结构的实现类 Collection和Map
- Java中常用数据结构的实现类 Collection和Map
- java中集合Collection和Map接口的实现类
- java的Collection和Map
- Java实现词频统计(Wordcount)-Map或Hashtable的value排序
- Go实现map元素的间接排序操作
- collection,list,map 排序
- java 对map或hashmap排序的两种方法
- 有关JAVA中collection和set和list的用法,以及元素的升序排序方法
- 设置Collection 或 Map 只读
- C++继承的各种模型
- 最大连续子序列
- 挖矿超频
- 2017-11-29 7周3次课 linux系统日常管理(三)
- 请求webService的几种方式
- java的Collection或Map实现元素自动排序
- 用jQuery向div中添加Html文本内容
- 自定义View重写onTouchCount,实现圆形随手指移动
- Oracle Spacial(空间数据库)查询空间数据1
- python学习---第九天
- java-interface(接口)
- Oracle Spacial(空间数据库)查询空间数据2
- linux下join命令的用法
- 行为级和RTL级的区别