Treeset集合

TreeSet 集合的特点:

1.它是Set集合的一种 就是无角标型的,二分叉的数据结构

2.它是按照CompareTo()来有序地存放数据的

3.它可以依赖2中比较方式,一种是比较器,一种Comperable;

4.比较器可以随便定义主要比较方法,而Comperable是要格局特定的需求更改的

-------------------------------------------------------------------------------------------

package com.java.TreeSetDmeo.www;

import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;

import com.java.b.www.ComstorByName;
import com.java.b.www.Soilder;

public class TreeSetDmeo {

public static void main(String[] args) {
  TreeSet set=new TreeSet(new ComstorByName());
  set.add(new Soilder("lisi1",27));
  set.add(new Soilder("lisi8",21));
  set.add(new Soilder("lisi9",23));
  set.add(new Soilder("lisi9",25));
  set.add(new Soilder("lisi15",15));
  for (Iterator it = set.iterator(); it.hasNext();) {
   System.out.println(it.next());
   
  }
 }
}

package com.java.b.www;

import java.util.Comparator;

public class Soilder {
 private String name;
 private int age;

public Soilder(String name, int age) {
  super();
  this.name = name;
  this.age = age;
 }

public Soilder() {
  super();
 }

public String getName() {
  return name;
 }

public void setName(String name) {
  this.name = name;
 }

public int getAge() {
  return age;
 }

public void setAge(int age) {
  this.age = age;
 }

@Override
 public String toString() {
  return "Soilder [name=" + name + ", age=" + age + "]";
 }
 /*@Override
 public int compareTo(Object obj){
  Soilder s=(Soilder)obj;
  return this.age-s.age;
 }*/
}

package com.java.b.www;

import java.util.Comparator;
import com.java.b.www.Soilder;;
public class ComstorByName implements Comparator{
 public int compare(Object o, Object o1) {
  Soilder stu1=(Soilder)o;
  Soilder stu2=(Soilder)o1;
  int temp=stu1.getName().compareTo(stu2.getName());
  if(temp>0){
   return temp;
  }
  if(temp<0){
   return temp;
  }
  return stu1.getAge()-stu2.getAge();
 }
}

时间: 2024-12-06 00:52:44

Treeset集合的相关文章

java 17 - 9 HashSet集合、TreeSet集合的练习

HashSet集合的练习 1 package zl_TreeSetTest; 2 /* 3 创建学生类 4 成员变量: 5 A:姓名 6 B:语文成绩 数学成绩 英语成绩 7 */ 8 public class Student { 9 private String name ; 10 private int chinese; 11 private int english; 12 private int math; 13 14 public Student() { 15 super(); 16 /

java中TreeSet集合如何实现元素的判重

1 /* 2 看一下部分的TreeSet源码.... 3 public class TreeSet<E> extends AbstractSet<E> 4 implements NavigableSet<E>, Cloneable, java.io.Serializable 5 { 6 private transient NavigableMap<E,Object> m; 7 //NavigableMap继承SortedMap, 二者都是接口,在TreeMa

java 17 - 6 TreeSet集合及其add()方法的源码解析

TreeSet:能够对元素按照某种规则进行排序. 排序有两种方式 A:自然排序 B:比较器排序 TreeSet集合的特点:排序和唯一 1 public class TreeSetDemo { 2 public static void main(String[] args) { 3 // 创建集合对象 4 // 自然顺序进行排序 5 TreeSet<Integer> ts = new TreeSet<Integer>(); 6 7 // 创建元素并添加 8 // 20,18,23,2

TreeSet集合的add()方法源码解析(01.Integer自然排序)

>TreeSet集合使用实例 >TreeSet集合的红黑树 存储与取出(图) >TreeSet的add()方法源码     TreeSet集合使用实例 package cn.itcast_05; import java.util.TreeSet; /* * TreeSet:能够对元素按照某种规则进行排序. * 排序有两种方式 * A:自然排序 * B:比较器排序 * * TreeSet集合的特点:排序和唯一 * * 通过观察TreeSet的add()方法,我们知道最终要看TreeMap的

黑马程序员——java——TreeSet集合中储存学生对象,按照其年龄进行排序

TreeSet集合中储存学生对象,按照其年龄进行排序 import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.TreeSet; public class SortListDemos { public static void main(String[] args) { // //linkhash

黑马程序员——java——自定义一个比较器,对TreeSet 集合中的元素按指定方法来排序

自定义一个比较器,对TreeSet 集合中的元素按指定方法来排序 import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet; //自定义一个比较器 class Mycompare implements Comparator { @Override public int compare(Object o1, Object o2) { // TODO Auto-generated method s

Java TreeSet集合排序 &amp;&amp; 定义一个类实现Comparator接口,覆盖compare方法 &amp;&amp; 按照字符串长度排序

package TreeSetTest; import java.util.Iterator; import java.util.TreeSet; import javax.management.RuntimeErrorException; /* 可以对set集合中的元素进行排序,其底层的数据结构是二叉树, 保证元素唯一性的依据是compareTo和return 0; TreeSet排序的第一种方式 让元素自身具备比较性 元素需要实现Comparable接口,覆盖compareTo方法 这种方式

JAVA学习第三十七课(常用对象API)- 集合框架(五)— Set集合:TreeSet集合

一.LinkedHashSet集合 HashSet下有子类LinkedHashSet API文档关于LinkedHashSet的解释: 具有可预知迭代顺序的 Set 接口的哈希表和链接列表实现.此实现与 HashSet 的不同之外在于,后者维护着一个运行于所有条目的双重链接列表.此链接列表定义了迭代顺序,即按照将元素插入到 set 中的顺序(插入顺序)进行迭代.注意,插入顺序不 受在 set 中重新插入的 元素的影响.(如果在 s.contains(e) 返回 true 后立即调用 s.add(

JAVA-初步认识-常用对象API(集合框架-treeset集合-二叉树)

一. treeset集合可以对其中的元素进行排序,它有两种排序方法,现在我们想知道它底层是什么结构,它是怎么确定元素位置的?它是有原因的,而且它这种结构对于排序而言,效率很高. 一说到排序,之前说到选择冒泡.选择冒泡对于比较次数而言,比较多一些,因为是转着圈在比.对于treeset而言,有个比较好的地方就是 将例子中的元素按照年龄排序,演示一遍它是怎么存放的. 存zhangsan,28的时候,就在容器中搞了一个zhangsan,28.容器中只有一个元素,不进行比较.紧跟着再来个lisi,21,l