java中元组的计数排序
我正在构建一个具有字符串到整数映射的类。如果我有3个苹果,我会有一个苹果到3的映射 我需要编写一个类,通过减少数字对对象的名称进行排序 所以如果我有 (苹果,3) (橙子,2) (香蕉,5) 我会得到 (香蕉,5),(苹果,3),(橘子2) 我想知道是否已经有一门课程可以让我的生活更轻松,或者我将如何实现这一点java中元组的计数排序,java,sorting,tuples,Java,Sorting,Tuples,我正在构建一个具有字符串到整数映射的类。如果我有3个苹果,我会有一个苹果到3的映射 我需要编写一个类,通过减少数字对对象的名称进行排序 所以如果我有 (苹果,3) (橙子,2) (香蕉,5) 我会得到 (香蕉,5),(苹果,3),(橘子2) 我想知道是否已经有一门课程可以让我的生活更轻松,或者我将如何实现这一点 谢谢。你真的想看看 假设计数是唯一的,只需反转元组,将计数存储为键,将水果名称存储为值。TreeMap然后存储按键值升序排序的项目,您可以读回这些值。由于排序是在插入时完成的,因此检索时
谢谢。你真的想看看 假设计数是唯一的,只需反转元组,将计数存储为键,将水果名称存储为值。TreeMap然后存储按键值升序排序的项目,您可以读回这些值。由于排序是在插入时完成的,因此检索时间非常短
如果您有非唯一计数,则有一个可以让您利用树形图的方法。您应该能够将对象(苹果,3)(桔子,2)(香蕉,5)放入列表,然后调用Collections.sort(您的列表)。然后,您需要确保您声明的对象实现了可比较的接口 有关更多信息,请访问 假设你声明你反对
public class FruitAndCount implements Comparable<FruitAndCount> {
private final String name;
private final Integer count;
public FruitAndCount(String name, int count) {
this.name = name;
this.count = count;
}
public String name() { return name; }
public int count() { return count; }
public int compareTo(FruitAndCount o) {
return this.count.compareTo(o.count);
}
}
公共类FruitAndCount实现可比较{
私有最终字符串名;
私有最终整数计数;
public fructandcount(字符串名称、整数计数){
this.name=名称;
this.count=计数;
}
公共字符串名称(){return name;}
public int count(){return count;}
公共int比较(结果和计数o){
将此.count.compareTo返回(o.count);
}
}
然后,您应该能够拨打以下电话,对您的列表进行排序:
FruitAndCount fruitArray[] = {
new FruitAndCount("Apples", 3),
new FruitAndCount("Oranges", 2),
new FruitAndCount("Bananas", 5)
};
List<FruitAndCount> fruit = Arrays.asList(fruitArray);
Collections.sort(fruit);
FrootAndCount FrootArray[]={
新水果和计数(“苹果”,3),
新水果和计数(“橙子”,2),
新水果和计数(“香蕉”,5)
};
列表水果=数组.asList(水果数组);
收藏.分类(水果);
然后,您应该有一个水果的排序列表。能够使类实现
可比较总是很好的,但有时您不能,或者这是不可取的(例如,如果您需要能够根据不同的属性以不同的方式比较同一类型)
在这种情况下,建议使用重载方法,该方法使用列表
进行排序,并使用a确定对象应如何排序。这比从旧元组中创建新元组要干净得多,并且比实现Comparable
(这也是一个有效的解决方案)更灵活。这是家庭作业吗?如果是这样的话,请这样标记。不要将这里的内容与排序算法计数排序混淆。