import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
/**
* .写一个应用程序,让美国,中国,俄罗斯,加拿大,巴西这五个国家按面积进行排序,
* 其中美国950万平方公里,中国960万平方公里,俄罗斯1200万平方公里,加拿大990平方公里,
* 巴西550万平方公里(要求:必须用集合来做)
* @author 够潮
*
*/
public class Demo6 {
/**
* @param args
*/
public static void main(String[] args) {
/**
* 初始化数据
*/
Country country = new Country("中国",960);
Country country2 = new Country("美国",950);
Country country3 = new Country("俄罗斯",1200);
Country country4 = new Country("加拿大",990);
Country country5 = new Country("巴西",550);
/**
* 填充数据
*/
Set<Country> set = new TreeSet<Country>();
set.add(country);
set.add(country2);
set.add(country3);
set.add(country4);
set.add(country5);
/**
* 遍历数据
*/
Iterator it = set.iterator();
while(it.hasNext()){
Country c = (Country) it.next();
System.out.println("国家: " +c.name + " 国家面积"+c.area);
}
}
}
class Country implements Comparable{
/**
* 面积
*/
public int area;
/**
* 名称
*/
public String name;
public Country( String name ,int area) {
super();
this.area = area;
this.name = name;
}
public int compareTo(Object o) {
Country country = (Country) o;
//return this.area - country.area;//排序从小到大
return -(this.area - country.area);//排序从大到小
}
}
分享到:
相关推荐
通过以上两种方法,我们可以在`TreeSet`中添加自定义对象,并按照特定规则进行排序。选择哪种方法取决于实际需求:如果排序规则简单且固定,那么实现`Comparable`接口即可;若排序规则复杂或需要动态变化,则应考虑...
TreeSet则基于TreeMap实现,它维护了元素的排序顺序,可以按照自然排序或自定义比较器进行排序。默认情况下,元素会按照它们的自然顺序(即Comparable接口定义的顺序)排序,如果元素不支持自然排序,可以在创建...
如果需要自定义排序规则,可以使用`Comparator`接口。在创建TreeSet时,传入一个实现了`Comparator`接口的实例,这样在进行比较时,就会使用这个Comparator的`compare(Object o1, Object o2)`方法。这允许我们根据...
在Java编程语言中,特别是在算法竞赛的环境下,经常会遇到需要对数据进行自定义排序的情况。以下将详细讲解三种常见的自定义排序方式: 1. **对象数组排序**: Java不支持像C++那样的结构体,因此当需要处理具有多...
本文将详细探讨 `TreeMap` 和 `TreeSet` 的排序机制以及如何自定义排序规则。 首先,`TreeMap` 是一个有序的 `Map` 实现,它按照键(Key)的自然顺序或自定义比较器对键进行排序。在提供的代码示例中,创建了一个 `...
8. **自定义排序**:通过传递Comparator实例给TreeSet构造函数,可以自定义元素的排序方式。 9. **实际应用**:TreeSet常用于需要排序且对性能有较高要求的场景,例如数据库索引、优先队列等。 以上就是关于标题和...
它维护了元素的排序,可以按照自然顺序或者自定义比较器的顺序进行排序。自然顺序是指元素本身的`Comparable`接口实现,如果元素类型不实现`Comparable`,则需要在创建`TreeSet`时提供一个`Comparator`。`TreeSet`的...
1. **有序性**:`TreeSet`中的元素会根据其自然排序或者自定义比较器进行排序。 2. **唯一性**:不允许有重复元素,如果尝试添加已存在的元素,将会被忽略。 3. **效率**:由于基于红黑树,`add()`, `remove()` 和 `...
对于`TreeSet`,由于其只能存储单个对象,若要按值排序,我们需要创建一个包含键值对的自定义类,然后重写`compareTo()`方法,使其根据值进行比较。例如: ```java class ValueWrapper implements Comparable...
与 HashSet 相比,TreeSet 的迭代顺序是可预测的,即按照元素的升序或自定义排序顺序进行。 在使用这两种集合时,需要注意以下几点: 1. 对于 HashSet,确保添加的对象正确实现了 `hashCode()` 和 `equals()` 方法...
对`Library`的`TreeSet<Book>`,可以通过自定义比较器(Comparator)实现按借出次数排序。每个`Book`对象可以维护一个计数器,表示被借出的次数。在比较器中,比较这个计数器,从而实现排序。然后遍历排序后的`...
`TreeSet`保证了元素的排序性,无论是自然排序还是自定义比较器排序。它不允许有重复元素,并且提供了一种高效的查找、添加和删除元素的方法,时间复杂度通常为O(log n)。 在设计扑克牌游戏时,我们可能需要考虑...
或者,可以在创建 TreeSet 时提供一个比较器(Comparator)来指定自定义的排序规则。 唯一性:TreeSet 中不允许重复元素,每个元素都必须是唯一的。如果将重复元素添加到 TreeSet 中,后面的重复元素将被忽略。 ...
由于`TreeMap`内部维护了一个红黑树,因此它的键值对是按照键的自然顺序或自定义排序顺序排列的,这使得`TreeMap`非常适合需要保持键有序的场景。 ### TreeSet `TreeSet`是基于`TreeMap`实现的一个Set(集合)实现...
当我们使用`TreeSet`或者对其他需要排序的集合进行自定义排序时,可以实现`Comparator`接口。`Comparator`有两个核心方法:`compare()`和`equals()`。`compare()`方法用于比较两个对象并返回一个整数值,规定了小于0...
本文将深入探讨`Collections.sort()`的使用、原理以及如何自定义排序规则。 首先,`Collections.sort()`的基本用法是针对实现了`Comparable`接口的类的实例。例如,我们有一个`Person`类,它包含了姓名和年龄属性,...
在实际应用中,使用自定义的比较器可以实现灵活的排序规则,例如,可以根据不同的字段或条件进行排序。例如,在上述代码中,可以根据 serverDataRate 字段对 ServerInfo 对象列表进行排序。 在 Java 中,还有其他的...
这里提到的“set中自定义排序规则”,暗示可能使用了`HashSet`或`TreeSet`,因为Set接口的实现类不包含重复元素,并且`TreeSet`可以根据自定义的比较器进行排序。 3. **自定义排序规则**:在Java中,如果要自定义...
- 如果需要支持多种排序方式(如正序、反序或自定义排序),可以设置不同的排序标志,并在触发排序时根据标志选择相应的比较器。 8. **用户反馈与UI设计**: - 显示当前的排序状态,如一个指示当前排序方式的图标...
3. **自定义排序规则**:在集合中,可以通过实现Comparator接口或重写Comparable接口来改变元素的比较规则,从而实现自定义排序。 **排序算法的性能分析** - 时间复杂度:衡量算法效率的重要指标,如冒泡排序为O(n...