概述
package CollectionTest;
import java.util.TreeSet;
import java.util.Comparator;
class M
{
int age;
public M(int age)
{
this.age = age;
}
public String toString()
{
return "M[age:" + age + "]";
}
}
public class TreeSetDemo
{
public static void main(String[] args)
{
MDemo1();
MDemo2();
MDemo3();
}
public static
void MDemo1(){
//使用Lambda
// 此处Lambda表达式的目标类型是Comparator
TreeSet<M> ts = new TreeSet<M>((o1 , o2) ->
{
M m1 = (M)o1;
M m2 = (M)o2;
// 根据M对象的age属性来决定大小,age越大,M对象反而越小
return m1.age > m2.age ? -1
: m1.age < m2.age ? 1 : 0;
});
ts.add(new M(5));
ts.add(new M(-3));
ts.add(new M(9));
System.out.println(ts);
}
public static
void MDemo2(){
//使用比较类,不用变更M类,而是建立比较类,作为参数传递给TreeSet
TreeSet<M> ts = new TreeSet<M>(new MComparator());
ts.add(new M(5));
ts.add(new M(-3));
ts.add(new M(9));
System.out.println(ts);
}
public static
void MDemo3(){
//使用比较类,不用变更M类,而是建立比较类,作为参数传递给TreeSet
TreeSet<M2> ts = new TreeSet<M2>();
ts.add(new M2(5));
ts.add(new M2(-3));
ts.add(new M2(9));
System.out.println(ts);
}
}
class MComparator implements Comparator<M>{
@Override
public int compare(M o1, M o2) {
return o1.age-o2.age;
}
}
//若使用compareTo方法就要改变M类
class M2 implements
Comparable<M2>
{
int age;
public M2(int age)
{
this.age = age;
}
public String toString()
{
return "M2[age:" + age + "]";
}
@Override
public int compareTo(M2 o) {
// TODO Auto-generated method stub
return this.age-o.age;
}
}
最后
以上就是霸气篮球为你收集整理的Java中TreeSet使用Lambda和比较类的方法的全部内容,希望文章能够帮你解决Java中TreeSet使用Lambda和比较类的方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复