Maison  >  Article  >  Java  >  Exemple d'utilisation de TreeSet pour trier par âge et nom en Java

Exemple d'utilisation de TreeSet pour trier par âge et nom en Java

黄舟
黄舟original
2017-09-07 10:25:372825parcourir

L'exemple de cet article décrit la méthode Java TreeSet permettant de trier les étudiants par âge et par nom. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :


import java.util.*;
class Treeset
{
 public static void main(String[] args)
 {
  TreeSet t = new TreeSet();
  t.add(new student("a1",15));
  t.add(new student("a2",15));
  t.add(new student("a1",15));
  t.add(new student("a3",16));
  t.add(new student("a3",18));
  for(Iterator it = t.iterator();it.hasNext();)
  {
   student tt = (student)it.next();//强制转成学生类型
   sop(tt.getName()+","+tt.getAge());
  }
 }
 public static void sop(Object obj)
 {
  System.out.println(obj);
 }
}
class student implements Comparable//接口让学生具有比较性
{
 private String name;
 private int age;
 student(String name,int age)
 {
  this.name = name;
  this.age = age;
 }
 public int compareTo(Object obj)
 {
  if(!(obj instanceof student))
   throw new RuntimeException("不是学生");
  student t = (student)obj;
  if(this.age > t.age)
   return 1;
  if(this.age==t.age)
   return this.name.compareTo(t.name);//如果年龄相同,在比较姓名排序
  return -1;
 }
 public String getName()
 {
  return name;
 }
 public int getAge()
 {
  return age;
 }
}

compareTo

int compareTo(T o)

Compare l'ordre de cet objet avec l'objet spécifié. Si l'objet est inférieur, égal ou supérieur à l'objet spécifié, renvoie respectivement un entier négatif, zéro ou un entier positif.

La classe d'implémentation doit garantir que la relation sgn(x.compareTo(y)) == -sgn(y.compareTo(x)) existe pour tous x et y. (Cela signifie que si y.compareTo(x) lève une exception, alors x.compareTo(y) lèvera également une exception.)

Les classes d'implémentation doivent également garantir que la relation est transitive : (x.compareTo(y)> ;0 && y.compareTo(z)>0) signifie x.compareTo(z)>0.

Enfin, l'implémenteur doit s'assurer que x.compareTo(y)==0 signifie que pour tout z, il existe sgn(x.compareTo(z)) == sgn(y.compareTo(z)). (x.compareTo(y)==0) == (x.equals(y)) est fortement recommandé, mais n'est pas strictement obligatoire. En général, toute classe qui implémente l’interface Comparable et viole cette condition doit clairement l’indiquer. Il est recommandé d'indiquer : "Remarque : Cette classe a un ordre naturel qui est incohérent avec les égaux."

Dans la description précédente, le symbole sgn(expression) spécifie la fonction mathématique signum, qui dépend de la valeur ou non. de l'expression est un nombre négatif, zéro ou positif, renvoie une valeur de -1, 0 ou 1 respectivement.

Paramètres :

o - l'objet à comparer.

Renvoie :

Un entier négatif, zéro ou un entier positif, selon que cet objet est inférieur, égal ou supérieur à l'objet spécifié.

Lance :

ClassCastException - si le type de l'objet spécifié ne permet pas de le comparer avec cet objet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn