TreeSet中实现自己的Comparator,以及常见的Collections方法的使用
来源:互联网 发布:个人工作计划安排软件 编辑:程序博客网 时间:2024/06/10 18:30
比起之前所说的HashSet,TreeSet又有了一定的优势,TreeSet是SortedSet中的子类,顾名思义这是有序的一个集合,先看一个例子:
public class TreeSetTest
{
public static void main(String[] args)
{
TreeSet tree = new TreeSet();
tree.add("aa");
tree.add("ad");
tree.add("c");
tree.add("b");
tree.add("e");
System.out.println(tree);
}
}
如果这是一个,ArrayList或者是Linkedlist他会是原样输出,如果是一个HashSet,他会乱序输出,但现在他会按顺序输出。
但是如果add方法中是一个自己定义的类对象:
public class TreeSetTest
{
public static void main(String[] args)
{
TreeSet tree= new TreeSet();
tree.add(new Persion("zhangran"));
tree.add(new Persion("zhang"));
System.out.println(tree);
}
}
class Persion
{
String name;
Persion(String name)
{
this.name = name;
}
public String toString()
{
return this.name;
}
}
此时此时便会出现异常,问题在于,TreeSet本来是应该比较大小,然后按顺序输出的但是,但是现在你给了他一个自己定义的类,它便无法识别,不知道怎么排序了,所以你现在所做的就是告诉他如何排序,此时就需要一个比较器(Comparator):
public class TreeSetTest
{
public static void main(String[] args)
{
TreeSet tree= new TreeSet(new MyComparator());
tree.add(new Persion("zhangran"));
tree.add(new Persion("zhang"));
System.out.println(tree);
}
}
class Persion
{
String name;
Persion(String name)
{
this.name = name;
}
public String toString()
{
return this.name;
}
}
class MyComparator implements Comparator
{
@Override
public int compare(Object o1, Object o2)
{
Persion p1 = (Persion)o1;
Persion p2 = (Persion)o2;
return p1.name.compareTo(p2.name);
}
}
这样TreeSet便会知道你是要按照字符串从小到大排序,这样便可以顺利运行。
下面再讲一下Collections中的某些方法,Collections是集合的父类,里面有许多的静态方法,可以给他的子类对象提供许多功能
1.让LinkedList中的数值有序输出
LinkedList list = new LinkedList();
list.add(new Integer(1));
list.add(new Integer(0));
list.add(new Integer(3));
list.add(new Integer(2));
//生成一个比较器
Comparator com = Collections.reverseOrder();//倒叙
Collections.sort(list,com);//list按照com的排列反方式排列;
输出:。。。。
此处不能直接用Collections.reverse();
这样的话,他会按照相反的顺序输出(2,3,0,1)而不是从大到小;
--------------------------
2.Collections.shuffle()乱序排列。。。。
3.Collections.min();最小
4.Collections.max();最大
还有好多方法在API里都很详细,大家可以自己多看看。。。。。。
- TreeSet中实现自己的Comparator,以及常见的Collections方法的使用
- 实现自己的Comparator及Collections详解
- 实现自己的Comparator及Collections详解
- Collections.sort中使用Comparator的实现类排序
- Set的实现类——TreeSet以及自定义Comparator
- TreeSet的带comparator的构造方法
- 【Java】Collections中sort方法Comparator的重写
- Collections的Comparable,Comparator
- java中TreeSet类add时去重问题(与自己定义的Comparator有直接关系)
- TreeSet、Comparator的结合应用
- JavaSE第四十七讲:实现自己的Comparator及Collections详解
- 黑马程序员——TreeSet实现按字符串长度排序,复写Comparator()接口的compare()方法
- TreeSet 的排序非自然数需要实现Comparator接口
- TreeSet的排序两种实现方式Comparator和Comparable
- Java中Collections的sort方法和Comparable与Comparator的比较
- Collections.sort()方法的使用及Comparable和comparator的qubie
- 使用LinkedList作为基层实现,定义自己的TreeSet
- Collections结合Comparator实现对列表的快速排序
- C#创建动态数组
- 某些网站
- 使用neoclipse
- Exchange Server2010的部署规划(一)
- neo4j的入门示例
- TreeSet中实现自己的Comparator,以及常见的Collections方法的使用
- 指针函数、函数指针及其示例
- Neo4j数据库的事务
- RMI是什么
- C#中读写文件的例子
- Neo4j Shell
- c# 数据的转换操作
- 写代码的随想(2)
- 使用广播接收者监听短信