`
liuhun3083053
  • 浏览: 16982 次
社区版块
存档分类
最新评论

treeset

阅读更多
TreeSet

eg:
   自定义User类,属性为姓名和年龄。将自定义的User类插入到   TreeSet集合中并实现排序
 
  思路:TreeSet集合自动实现排序的原理是首先要求对象具有可比性,所以User类需要实现Comparable接口
        User的两个属性  首先对年龄判断,再对姓名判断

public class User implements Comparable

public int compareTo(Object o) {
if(!(o instanceof User))
{
throw new RuntimeException("不是User对象");
}
User u = (User)o;

System.out.println(this.getName()+"compareto"+u.getName());
if(this.getAge()>u.getAge())
{
return 1;
}
else if(this.getAge()==u.getAge())
{
return(this.getName().compareTo(u.getName()));
//return 0;
}

return -1;

}


TreeSet实现排序的第二种方法 也就是在构造结合时将比较器对象作为参数传入到集合的构造方法当中

public class MyComparator implements Comparator

public int compare(Object o1, Object o2) {
User u1 = (User)o1;
User u2 = (User)o2;
if(!(o1 instanceof User)&& !(o2 instanceof User))
{
throw new RuntimeException("存入的对象不是User类");
}
int num = u1.getName().compareTo(u2.getName());//按姓名为
//第一关键字排序
if(num == 0)//如果姓名是相同的,按年龄作为第二关键字排序,可以考虑将
//年龄包装成Integer类调用其自身的compareto方法
{
    return new Integer(u1.getAge()).compareTo(new Integer(u2.getAge()));
}
return num;
}


比较器的好处是用发比较灵活 在开发的过程中使用比较器的方法比较常用
实现对TreeSet排序一般用两种方法
在项目中常使用比较器方法
也就是 自定义一个比较器 要求实现Comparator接口
public class MyComparator implements Comparator
再覆写compare()方法
这种方式比较灵活可以自定义比较器

第二种方式是在构造集合中的类的时候 给类实现comparable接口 让类自身有可比性
需要覆写compareto()方法
public class User implements Comparable
public int compareTo(Object o)


使用场景:
TreeSet 适用于要排序的非重复元素的存放;
基于TreeMap实现,支持排序。
  非线程安全。
0
0
分享到:
评论

相关推荐

    TreeSet 红黑树结构算法

    TreeSet 红黑树结构算法 TreeSet 红黑树结构算法是 Java 中的一种数据结构,它是基于红黑树数据结构的实现。红黑树是一种自平衡的排序二叉树,它可以保证快速检索指定节点。TreeSet 和 TreeMap 之间存在着紧密的...

    java泛型 用了treeset

    使用TreeSet和Comparator,编写TreeSetTest2类,要求对TreeSet中的元素1-元素10进行排列,排序逻辑为奇数在前偶数在后,奇数按照升序排列,偶数按照降序排列。 如果需要的话可以下载,有写成文章的。有写了一点中文...

    javaTreeSet实现图书管理系统

    在Java编程语言中,`TreeSet` 是一种集合框架下的数据结构,它实现了SortedSet接口,提供了有序且无重复元素的存储。在这个“javaTreeSet实现图书管理系统”中,我们可以利用`TreeSet`的特性来构建高效且功能完备的...

    java 集合框架(TreeSet练习)

    在Java集合框架中,`TreeSet`是一个有序、不可重复的集合,它基于红黑树(Red-Black Tree)数据结构实现。`TreeSet`在许多场景下比其他集合如`ArrayList`或`HashSet`更有优势,因为它的元素总是按特定顺序排列,并且...

    学生成绩排序(TreeSet方式实现)

    `TreeSet`是Java集合框架中的一个类,它继承自`AbstractSet`并实现了`NavigableSet`接口。`TreeSet`的主要特点就是它会自动按照一定的顺序对存储的元素进行排序。在这个场景下,我们使用`TreeSet`来实现学生成绩的...

    HashSet和TreeSet_围墙之外

    HashSet和TreeSet是Java集合框架中的两种重要数据结构,它们都是Set接口的实现类,用于存储不重复的元素。在编程实践中,理解它们的区别和应用场景至关重要。 HashSet是基于HashMap实现的,它不保证元素的顺序,...

    用java的TreeSet写的一个求并集算法

    在Java编程中,集合框架是处理数据的重要工具,而`TreeSet`作为其中之一,它是一个有序、不包含重复元素的集合。本知识点主要探讨如何利用Java的`TreeSet`类来实现两个集合的并集算法。 `TreeSet`是基于红黑树(Red...

    treeset 和 hashlist 实现的扑克牌游戏

    本话题将重点关注`TreeSet`和`ArrayList`(而非`hashlist`,可能是`ArrayList`的误写)这两种数据结构在实现扑克牌游戏中的应用。我们将深入探讨它们各自的特点以及在特定场景下的选择。 首先,让我们了解`...

    (TreeSet) s.subSet(608, true, 611, true)

    标题中的"(TreeSet) s.subSet(608, true, 611, true)"是一个Java编程中关于TreeSet集合的操作。TreeSet是Java集合框架中的一种有序、可重复的元素集合,它实现了SortedSet接口,内部基于红黑树(Red-Black Tree)...

    排序之HashSet和TreeSet的区别

    在Java编程语言中,集合框架是处理数据的重要组成部分,其中`HashSet`和`TreeSet`是两种常用的Set接口实现类。它们各自具有独特的特性和用途,理解它们的区别对于编写高效且正确的代码至关重要。 首先,`HashSet`是...

    treemap treeset hashset hashmap 简要介绍

    在Java编程语言中,集合框架提供了多种数据结构来存储和操作数据,其中`TreeMap`、`TreeSet`、`HashSet`以及`HashMap`是最常用的数据结构之一。这些集合类各自有着独特的特性和应用场景,下面将对它们进行详细介绍。...

    Java数据结构--13.Java8数据结构TreeSet.pdf

    《Java8数据结构——TreeSet详解》 在Java集合框架中,TreeSet是一个重要的数据结构,它是Set接口的实现类之一,与HashSet和LinkedHashSet不同,TreeSet具有排序功能,这是因为其不仅继承自AbstractSet,还实现了...

    TreeSet集合用法

    介绍TreeSet集合用法,向TreeSet集合中添加类的对象,此类需实现Comparable接口,有实例,供需要的朋友下载学习。

    java集合-TreeSet的使用

    TreeSet 是 Java 中的一个集合类,它实现了 SortedSet 接口,并且使用红黑树作为底层数据结构。TreeSet 具有以下主要特点: 排序性:TreeSet 中的元素是有序的,默认按照元素的自然顺序进行排序。或者,可以在创建 ...

    TreeSet 不用自然排序自己做比较器

    public int compare(String o1,String o2) { return o1.length()-o2.length();... TreeSet ts = new TreeSet(com); ts.add("string"); ts.add("char"); ts.add("nothing�"); System.out.println(ts);

    用TreeSet,添加字符串,按照长度和字母顺序排序

    用TreeSet添加字符串,按照字符串首字母字母顺序和字符串长度顺序排序

    HashSet和TreeSet.doc

    HashSet 和 TreeSet 是 Java 中两种常用的 Set 集合实现,它们都继承自 Set 接口,但实现方式和特性上存在显著差异。 首先,HashSet 是基于哈希表(HashMap 实例)来存储元素的,因此它提供了快速的插入、删除和...

    Java SE程序 TreeSet类中自定义CompareTo类

    Java SE程序 TreeSet类中自定义CompareTo类Java SE程序 TreeSet类中自定义CompareTo类Java SE程序 TreeSet类中自定义CompareTo类Java SE程序 TreeSet类中自定义CompareTo类Java SE程序 TreeSet类中自定义CompareTo类...

    在TreeSet中添加自定义对象

    ### 在TreeSet中添加自定义对象 #### 一、前言 在Java编程语言中,`TreeSet`是一个实现了`Set`接口的类,它基于红黑树(Red-Black tree)实现,能够保证集合中的元素是有序的,并且不允许重复的元素。`TreeSet`有两...

    HashSet,TreeSet和LinkedHashSet的区别1

    本文主要探讨了三种基于Set接口的实现类:HashSet、LinkedHashSet和TreeSet,它们各自有不同的特性和使用场景。 首先,HashSet是最基础的Set实现,它不保证元素的特定顺序,也不保证在多次操作后保持元素的顺序不变...

Global site tag (gtag.js) - Google Analytics