Tag: 排序

按值按字母顺序排序HashMap

我有一个HashMap ,其中Object是Student的ID,Student是Student的一个对象。 如何通过学生姓名, student->getName()求助HashMap?

无法复制:“比较方法违反了其总合同!”

我收到以下错误:“比较方法违反了其总合同!” 使用以下比较器时,我无法使用jUnit复制exception。 我想知道导致这个问题的原因以及如何复制它。 其他一些例子有相同的问题而不是如何复制它。 public class DtoComparator implements Comparator { @Override public int compare(Dto r1, Dto r2) { int value = 0; value = r1.getOrder() – r2.getOrder(); if (value == 0 && !isValueNull(r1.getDate(), r2.getDate())) value = r1.getDate().compareTo(r2.getDate()); return value; } private boolean isValueNull(Date date, Date date2) { return date == null || date2 == null; […]

在Java中,通过key.length()对哈希映射进行排序

我有这样的hashmap: HashMap map = new HashMap(); map.put(“java”,4); map.put(“go”,2); map.put(“objective-c”,11); map.put(“c#”,2); 现在我想按照它的密钥长度对这个映射进行排序,如果两个密钥长度相等(例如go和c#都是长度2),那么按照alphba顺序排序。 所以我期望得到的结果是这样的: 打印结果:objective-c,11 java,4 c#,2 go,2 这是我自己的玩具,但它根本不起作用…… HashMap map = new HashMap(); map.put(“java”,4); map.put(“go”,2); map.put(“objective-c”,11); map.put(“c#”,2); Map treeMap = new TreeMap( new Comparator() { @Override public int compare(String s1, String s2) { return s1.length().compareTo(s2.length()); } } ); 实际上’compareTo’方法显示为红色(无法编译)….请有人帮我一些代码示例…我有点困惑如何使用比较器类来自定义比较对象…

在Java中对多语言环境字符串进行排序

我正在尝试按字符串字段“country”对对象列表进行排序。 每个国家都使用其母语 阿根廷 澳大利亚 Österreich Ελλάδα България… 我想做的是让“България”例如出现在“A *”国家之后,因为字母’Б’对应于拉丁’B’。 我正在尝试使用默认的Collat​​er,但非拉丁名称仍然在列表中排在最后。 到目前为止,这是我的代码: private static final Comparator DOMAIN_COUNTRY_COMPARATOR = new Comparator() { @Override public int compare(DomainTO t, DomainTO t1) { Collator defaultCollator = Collator.getInstance(); return defaultCollator.compare(t.getCountry(), t1.getCountry()); } };

如何在Java中对generics类型列表进行排序

我有一组所有共享一些共同属性的类,所以我让它们都扩展了一个共同的基类BaseEntity 。 所以我有,例如Foo extends BaseEntity和Bar extends BaseEntity 。 我还希望这些Foo和Bar对象的列表是可排序的,所以我已经实现了Comparable 。 我将类定义为Foo extends BaseEntity implements Comparable和Bar extends BaseEntity implements Comparable ,并且Foo或Bar的列表的排序按预期工作 – 当然,排序的细节是不同的在不同的子类中。 但是,当我事先不知道我是否会有Foo或Bar时,我无法弄清楚如何进行分类工作。 例如,此代码无法编译: public class UtilityClass { …bunch of stuff… List values; public List sort() { Collections.sort(values); return values; } …more methods… } 错误消息Bound mismatch: The generic method sort(List) of type Collections is not […]

案例使用Google Guava进行不敏感排序

目前我在2个不同的地方使用以下2段代码来创建一个排序的,不可变的列表。 return Ordering.natural().immutableSortedCopy(iterable); 和 return Ordering.usingToString().immutableSortedCopy(machines); 但是,这使得“排序”区分大小写 。 如何使用guava apis创建不区分大小写的排序不可变列表?

Java Arrays.sort()需要很长时间

我使用Java的Arrays.sort()函数按照上次修改时间对文件列表进行排序。 245个文件的排序大约需要5秒钟。 这对我来说似乎太长了。 我觉得它不应该超过0.5秒。 这是一个很好的假设吗? 我究竟做错了什么? 或者这听起来正常吗? public static class LastModifiedComparator implements Comparator { @Override public int compare(File f1, File f2) { return (int)(f1.lastModified() – f2.lastModified()); } } File folder = new File( “C:\\Whatever\\” ); File[] filesInFolder = folder.listFiles(); logger.debug(“Starting File Sort”); Arrays.sort(filesInFolder, new LastModifiedComparator()); logger.debug(“Done File Sort”); 日志输出 2012-08-10 14:24:20,333 DEBUG http-8080-4 :73 – […]

java中的动态数组合并

我有两个像这样的数组。 String[] arr1 = { “1”, “2”, “3” }; String[] arr2 = { “111”, “222”, “333”, “444”, “555”, “666”, “777”, “888”, “999” }; 我想使用索引值的组合合并这两个数组。 我的输入将是两个整数值(2:3比例),就像这样 int firstArray = 2; //input value int secondArray = 4; //input value 合并后,所有值都将存储在单个列表中。 现在我需要像这样的输出。 1 2 111 222 333 444 3 1 555 666 777 888 2 3 999 111 […]

java:基于array2排序array1

感谢Zirak的帮助在我之前的post中,我在JavaScript中实现了以下内容: var arr1 =[0,1,2,3]; var arr2 =[“ac”, “bc”, “ad”, “e”]; var result = arr1 .sort(function(i, j){return arr2[i].localeCompare(arr2[j])}) document.write(result ); 实现这一点的方法在JavaScript中非常紧凑,这样的简单实现也可以实现这一点的java实现吗? 我只能想到实现Comparable接口,如下所示: public class testCompare { public static String[] arr2={“ac”, “bc”, “ad”, “e”}; public static Obj[] arr1={new Obj(0), new Obj(1), new Obj(2), new Obj(3)}; static class Obj implements Comparable{ int index=0; public Obj(int i){ index=i; } […]

按嵌套映射的值对外部映射进行排序

按照以前保留外键和内键的嵌套映射中的列表大小对外部映射Map<String, Map<String, List>>进行排序 。