java学习之treeset

Posted dreamy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java学习之treeset相关的知识,希望对你有一定的参考价值。

Set:无序,不可以重复元素

  |--HashSet:数据结构是哈希表,线程是非同步的。

          保证元素唯一性的原理:判断元素的hashcode值是否相同

            如果相同,还会继续判断元素的equals方法,是否为true

 

  |--TreeSet:可以对Set集合中的元素进行排序

 

注意:排序时,当主要条件相同时,一定要判断一下次要条件(否则会被认为是同一个对象而不被加入)

 1 import java.util.Iterator;
 2 import java.util.TreeSet;
 3 
 4 /**
 5  * 需求:
 6  * 往treeset集合中存储自定义对象学生  
 7  * 想按照学生的年龄进行排序
 8  */
 9 public class PackageDemo {
10 
11     public static void main(String[] args) {
12         TreeSet ts=new TreeSet();
13         ts.add(new Student("皮卡丘1",20));
14         ts.add(new Student("皮卡丘",20));
15         ts.add(new Student("皮卡",19));
16         ts.add(new Student("雷卡",21));
17         ts.add(new Student("雷卡",21));
18         
19         Iterator it=ts.iterator();
20         
21         while(it.hasNext()) {
22             Student student=(Student)it.next();
23             System.out.println(student.getName()+"...."+student.getAge());
24         }
25         
26     }
27 
28 }
29 class Student implements Comparable{//该接口强制让学生具有比较性
30     private String name;
31     private int age;
32     public Student(String name,int age) {
33         this.name=name;
34         this.age=age;
35     }
36     public String getName() {
37         return name;
38     }
39     public int getAge() {
40         return age;
41     }
42     @Override
43     public int compareTo(Object o) {
44         if(null == o) {
45             throw new RuntimeException("传进一个空对象");
46         }
47         if(!(o instanceof Student)) {
48             throw new RuntimeException("传进来的不是学生类");
49         }
50         Student student=(Student)o;
51         if(this.age>student.age) {
52             return 1; 
53         }else if(this.age==student.age) {
54             return this.name.compareTo(student.name);//注意:排序时,当主要条件相同时,一定要判断一下次要条件(否则会被认为是同一个对象而不被加入)
55         }
56         return -1;
57     }
58     
59     
60 }

 

以上是关于java学习之treeset的主要内容,如果未能解决你的问题,请参考以下文章

GoLang学习之变量定义和初始化

Python面向对象学习之八,装饰器

java学习之借书系统

java学习之继承多态

java学习之JDBC

Java学习之JDBC