TreeSet---使用匿名内部类创建比较器添加元素

 1 import java.util.Comparator;
 2 import java.util.Iterator;
 3 import java.util.TreeSet;
 4
 5
 6 public class Test2
 7 {
 8     public static void main(String[] args)
 9     {
10         TreeSet<Person> set = new TreeSet<>(new Comparator<Person>() {
11
12             @Override
13             public int compare(Person o1, Person o2)
14             {
15                 int  result;
16                 result = o1.getAge()-o2.getAge();
17                 if(result==0) {
18                     result = o1.getName().compareTo(o2.getName());
19                 }
20                 return result;
21             }
22         });
23        Person p1 = new Person("剑魔",20);
24        Person p2 = new Person("剑姬",20);
25        Person p3 = new Person("剑豪",20);
26        Person p4 = new Person("剑圣",20);
27        set.add(p1);
28        set.add(p2);
29        set.add(p3);
30        set.add(p4);
31      Iterator<Person> iterator = set.iterator();
32      while(iterator.hasNext()) {
33          System.out.println(iterator.next());
34      }
35     }
36 }

自定义一个类

 1 public class Person
 2 {
 3     private String name;
 4     private int age;
 5     public String getName()
 6     {
 7         return name;
 8     }
 9     public void setName(String name)
10     {
11         this.name = name;
12     }
13     public int getAge()
14     {
15         return age;
16     }
17     public void setAge(int age)
18     {
19         this.age = age;
20     }
21     public Person(String name, int age)
22     {
23         super();
24         this.name = name;
25         this.age = age;
26     }
27     public Person()
28     {
29         super();
30     }
31     @Override
32     public String toString()
33     {
34         return "Person [name=" + name + ", age=" + age + "]";
35     }
36     @Override
37     public int hashCode()
38     {
39         final int prime = 31;
40         int result = 1;
41         result = prime * result + age;
42         result = prime * result + ((name == null) ? 0 : name.hashCode());
43         return result;
44     }
45     @Override
46     public boolean equals(Object obj)
47     {
48         if (this == obj)
49             return true;
50         if (obj == null)
51             return false;
52         if (getClass() != obj.getClass())
53             return false;
54         Person other = (Person) obj;
55         if (age != other.age)
56             return false;
57         if (name == null)
58         {
59             if (other.name != null)
60                 return false;
61         }
62         else if (!name.equals(other.name))
63             return false;
64         return true;
65     }
66
67 }
时间: 2024-11-08 19:07:20

TreeSet---使用匿名内部类创建比较器添加元素的相关文章

Java线程Thread使用匿名内部类创建的两种方式

匿名内部类实现线程的两种方式: 第一种方式: 1.继承Thread类 2.重写run方法 3.将要执行的代码写在run方法中 第二种方式: 1.将Runnable的子类对象传递给Thread的构造方法 2.重写run方法 3.将执行的代码写在run方法中,最后我们开启线程 package com.yyx.thread; /** * 匿名内部类创建线程 yyx 2018年2月4日 */ public class AnonymousThread { public static void main(S

Java多线程Thread使用匿名内部类创建的两种方式

匿名内部类实现线程的两种方式: 第一种方式: 1.继承Thread类 2.重写run方法 3.将要执行的代码写在run方法中 第二种方式: 1.将Runnable的子类对象传递给Thread的构造方法 2.重写run方法 3.将执行的代码写在run方法中,最后我们开启线程 package com.yyx.thread; /** * 匿名内部类创建线程 yyx 2018年2月4日 */ public class AnonymousThread { public static void main(S

jQuery中动态创建、添加元素的方法总结

<input type="button" value="创建元素" id="btn"> <div id="box"></div> <p id="main">这是文中一段话</p> //点击按钮,动态创建元素 //方法一:$()创建元素,后用append()方法添加.append() 还可以把其他地方元素添加进这个对象中. $('#btn').cli

匿名内部类创建线程,简化线程创建代码

1 package cn.learn.thread.Thread; 2 /* 3 匿名内部类方式的实现线程的创建 4 5 匿名:没有名字 6 内部类:写在其他类的内部 7 8 作用:简化代码,不用单独写一个类,来设置线程任务 9 把子类继承父类,重写父类方法,创建子类对象合成一部完成 10 或者实现类实现接口,重写接口方法,创建实现类对象一部完成 11 匿名内部类的最终产物:子类/实现类对象,没有名字 12 13 格式: 14 new 父类/接口{ 15 重写父类/接口方法 16 } 17 18

DOM(3)js创建,添加元素

1.createElement() , createTextNode() , appendChild() <script> var body=document.getElementsByTagName('body')[0]; //获取body 元素 var div=document.createElement("div"); //创建元素节点直接写元素名 body.appendChild(div);// appendChild()是添加子元素 ,(多个)默认添加到子元素的末

匿名内部类创建多线程

public class Thread4 { public static void main(String[] args) { //匿名实现多线程 //继承thread类 new Thread(){ public void run(){ for(int x=0;x<111;x++){ System.out.println(getName()+":"+x); } } }.start(); //实现runable new Thread(new Runnable() { @Overri

java语言中常用到的集合,根据自己所学以及查询的资料进行的汇总

一.集合的定义 集合:是在计算机中用于存储一种或多种引用类型数据,并且长度可变的容器. 外延:List集合.Queue集合.Set集合 二.各类集合的特点   List集合(继承Collection接口):有序存储可重复元素 外延:ArrayList集合.Vector集合.LinkedList集合 ArrayList集合:基于数组实现.长度可变的.分配连续内存空间的List集合.特点:线程异步.线程不安全.效率高    遍历以及随机访问元素的效率高 Vector集合:基于数组实现的,线程同步的遗

【TreeSet:请按照姓名的长度排序:比较器排序】

package com.yjf.esupplier.common.test; import java.util.Comparator; import java.util.TreeSet; /** * @author shusheng * @description 比较器排序 * @Email [email protected] * @date 2018/12/17 10:36 */ public class TreeSetDemo1 { public static void main(Strin

Java API —— TreeSet类

1.TreeSet类  1)TreeSet类概述 使用元素的自然顺序对元素进行排序 或者根据创建 set 时提供的 Comparator 进行排序 具体取决于使用的构造方法.   2)TreeSet是如何保证元素的排序和唯一性的 底层数据结构是红黑树(红黑树是一种自平衡的二叉树) 例子1: package treesetdemos; import java.util.TreeSet; /** * Created by gao on 15-12-17. */ /* * TreeSet:能够对元素按