Tag: 排序

java:带有lambda表达式的Arrays.sort()

我想使用Arrays.sort方法按长度对数组中的String元素进行Arrays.sort 。 我在这里被告知,可以使用lambda表达式而不是创建实现Comparator的新类。 它是否完全相同,但它不起作用。 import java.util.Arrays; import java.util.Comparator; public class MainClass { public static void main(String[] args) { String[] months = {“January”,”February”,”March”,”April”,”May”,”June”,”July”,”August”,”September”,”October”,”December”}; System.out.println(Arrays.toString(months)); //printing before //neither this works: Arrays.sort(months, (a, b) -> Integer.signum(a.length() – b.length()) ); //nor this: Arrays.sort(months, (String a, String b) -> { return Integer.signum(a.length() – b.length()) }; ); System.out.println(Arrays.toString(months)); //printing after } […]

如何使用加权函数对多个字段的搜索结果进行排序?

我有一个Lucene索引,其中每个文档都有几个包含数值的字段。 现在我想根据该字段的加权和对搜索结果进行排序。 例如: field1=100 field2=002 field3=014 加权函数看起来像: f(d) = field1 * 0.5 + field2 * 1.4 + field3 * 1.8 结果应按f(d)排序,其中d代表文件。 排序function应该是非静态的,并且可能因搜索到搜索而不同,因为常量因素受执行搜索的用户的影响。 有谁知道如何解决这个问题,或者想知道如何以另一种方式实现这一目标?

MongoDB Java驱动程序:与sort不同

使用MongoDB控制台,我可以使用不同的密钥编写本机MongoDB查询,其类似于: db.mycollection.distinct(‘mykey’).sort(‘mykey’, 1) 使用Java驱动程序,我希望能够像这样编写相同的查询: myCollection.distinct(“myKey”).sort(new BasicDBObject(“myKey”, 1)); 但是,这不起作用,因为DBCollection#distinct()返回类型List而不是类型DBCursor如DBCollection#find() 。 如何使用Java驱动程序编写带有排序的不同查询?

如何在java中对多个数组进行排序

我试图按字典顺序排序三个数组。 这些arrays通过一个公共arrays相互关联。 如果我certificate,它更容易解释: int[] record = new int[4]; String [] colors = {“blue”, “yellow”, “red”, “black”}; String [] clothes = {“shoes”, “pants”, “boots”, “coat”}; 在控制台上打印时,我希望将它们放在与以下类似的三列中: 未排序: Record Color Clothes 0 blue shoes 1 yellow pants 2 red boots 3 black coat 按颜色排序: Record Color Clothes 3 black coat 0 blue shoes 2 red boots 1 […]

使用非西方字符对字符串进行排序

我想打印所有可用语言的分类波兰语名称。 import java.util.*; public class Tmp { public static void main(String… args) { Locale.setDefault(new Locale(“pl”,”PL”)); Locale[] locales = Locale.getAvailableLocales(); ArrayList langs = new ArrayList(); for(Locale loc: locales) { String lng = loc.getDisplayLanguage(); if(!lng.trim().equals(“”) && ! langs.contains(lng)){ langs.add(lng); } } Collections.sort(langs); for(String str: langs){ System.out.println(str); } } } 不幸的是我对排序部分有疑问。 输出是: : : kataloński koreański litewski macedoński […]

Java中大型数据集的基于文件的合并排序

给定不适合内存的大型数据集,是否有任何库或api在Java中执行排序? 实现可能类似于linux实用程序排序。

用于字节数组的Java Comparator(字典)

我有一个带有byte []键的hashmap。 我想通过TreeMap对其进行排序。 为字典顺序实施比较器的最有效方法是什么?

如何按升序排序IP地址

有什么方法可以对此进行排序吗? 或者我只是需要拆分并使用循环进行比较? 输入 123.4.245.23 104.244.253.29 1.198.3.93 32.183.93.40 104.30.244.2 104.244.4.1 产量 1.198.3.93 32.183.93.40 104.30.244.2 104.244.4.1 104.244.253.29 123.4.245.23 到目前为止,我使用HashMap存储我的数据。 我想按升序对IP地址进行排序。 貌似TreeMap是更好的选择吗?

使用自定义比较器时,使用TreeSet或ArrayList是否更好?

我已经实现了一个图表。 我想根据它们的度数对给定的顶点子集进行排序。 因此,我编写了一个名为DegreeComparator的自定义比较器。 private class DegreeComparator implements Comparator { @Override public int compare(Integer arg0, Integer arg1) { if(adj[arg1].size() == adj[arg0].size()) return arg1 – arg0; else return adj[arg1].size() – adj[arg0].size()); } } 那么,下面哪一个更有效率? 使用TreeSet public Collection sort(Collection unsorted) { Set sorted = new TreeSet(new DegreeComparator()); sorted.addAll(unsorted); return sorted; } 使用ArrayList Collections.sort(unsorted, new DegreeComparator()); 请注意,第二种方法不是函数,而是单行代码。 直观地说,我宁愿选择第二个。 但我不确定它是否更有效率。

排序降序:Java Map

我想要做的是按值排序地图。 我查看了stackoverflow站点上提供的许多问题,并找到了以下解决方案,它可以实现我想要的但却缺少一些小东西。 Link1 :排序地图 但我遇到的问题是,默认情况下,这是按值按升序排序。 我想按降序排序: 所以我做的是创建了一个实现比较器的类 class MyComparator implements Comparator { Map map; public MyComparator(Map map) { this.map = map; } public int compare(Object o1, Object o2) { return ((Integer) map.get(o2)).compareTo((Integer) map.get(o1)); } } 然后我将我的地图传递给树图, MyComparator comp = new MyComparator(myMap); Map newMap = new TreeMap(comp); newMap.putAll(myMap); 这似乎是不好的方法,因为我觉得这是低效的。 有没有办法在链接中更改解决方案,默认情况下按降序排序。