jjzjj

Comparator

全部标签

java - 创建一个忽略大小写的 TreeSet

关于Java集合框架的Java教程中的一个练习要求使用SortedSet来消除参数的重复项,并指定一个比较器,以便在排序和识别集合元素时忽略大小写。具体要求如下:“采用FindDupsexample并将其修改为使用SortedSet而不是Set。指定Comparator,以便在排序和识别set元素时忽略大小写。”这是FindDupsExample:importjava.util.*;publicclassFindDups{publicstaticvoidmain(String[]args){Sets=newHashSet();for(Stringa:args)s.add(a);Syst

java - 根据运行时属性对对象列表进行排序

我有一个ValueObjects的List[画外音]。这些对象有很多属性和相应的获取/设置方法。我想根据我将在运行时获得的属性对这个List进行排序。让我详细解释一下...我的语音是这样的:publicclassEmployee{Stringname;Stringid;privateStringgetName(){returnname;}privateStringgetId(){returnid;}}我将在运行时得到一个字符串sortType,它可以是"id"或"name"。我想根据String的值对列表进行排序。我曾尝试同时使用Comparator和反射,但没有成功。可能是我没有正确

Java 8 对类成员的属性进行排序

类声明:classEntity{Stringname;SubEntitysubEntity;//subEntityhasamethodgetAmount()whichreturnsint}我知道使用Java8我们可以这样排序:entities.sort(Comparator.comparing(Entity::name));但是有没有一种方法可以根据子实体的属性对其进行排序,例如:entities.sort(Comparator.comparing(Entity::SubEntity::getAmount()));P.S:任何一行都全下。 最佳答案

Java:为什么我不能在比较器中抛出异常?

直接的答案是因为Comparator.compare的接口(interface)被指定为不会抛出异常。但这是为什么呢?或者换句话说:我的Comparator必须依赖于一个可以抛出异常的函数。从理论上讲,这不应该发生。但如果发生这种情况,我希望它能从我使用Comparator的整个函数中脱离出来(在Collections.sort中)。IE。我希望它的行为就像发生了未处理的异常一样。这似乎以一种明显的自然方式是不可能的(因为如果接口(interface)说它不能抛出异常,它就不能)。我该如何解决这个问题?使用丑陋的try/catch并打印出异常并希望我能识别它?这似乎是一种非常丑陋的方式

java - 在列表中查找最大和最小 double 值

我有以下double值列表:items{9.0,4.0,16.0,-6.0,5.0}我想找到最大值和最小值,为此我做了:doublemax=items.stream().max(Comparator.comparing(String::valueOf)).get();doublemin=items.stream().min(Comparator.comparing(String::valueOf)).get();我得到的结果是max=9.0和min=-6.0。我原以为最大值是16.0。后来我把16.0改成92.0就可以了;它给了我max=92.0你知道怎么解决吗?

java - 实现接口(interface)比较器

假设我有一个简单的接口(interface),我希望基于某些功能Comparable:interfaceOrganismextendsComparable{StringgetName();intgetComplexity();@OverridedefaultintcompareTo(Organismother){returnthis.getComplexity()-other.getComplexity();}}每个实现类都必须返回一个唯一的复杂性,因此一个类的任何两个实例都将具有相同的复杂性,而不同类的任何两个实例将具有不同的复杂性。自然排序会将类的所有实例“组合”在一起。我现在想在

java - 可以确定 Java 比较器的进度吗?

我正在使用Comparator实现对大量对象进行排序。根据此集合中对象的类型,排序需要几毫秒到半分钟。有什么方法可以在排序时确定Comparator的进度吗?我想为用户可视化。Collections.sort(sorted,newComparator(){publicintcompare(Object[]o1,Object[]o2){/*doit...*/returnorder;}}该集合可能包含简单的短字符串对象、日期对象或(最坏情况)需要在排序时获取数据的CLOB对象。 最佳答案 您可以通过编写一个计算“全局”变量的比较器来做到

java - 类型安全地创建要传递给 Comparator.comparing() 的 Function 实例

假设我有一个具有以下签名的方法:>Comparatormethod(Map>comparatorFunctionMap)该方法接受一个函数映射(带有字符串键)并创建一个Comparator结果(如何并不重要)。映射值是Function的实例,这样它们就可以直接传递给Comparator.comparing().如何以类型安全的方式填充此map?假设我有一个类Person具有属性name和age(以及他们的setter/getter)。当我执行以下操作时:Map>map1=newHashMap();map1.put("name",Person::getName);method(map1)

java - 如何使用比较器对重复的字符串进行排序?

假设我有一个包含worker的列表,每个worker都有3个字段:它的名字、他工作的部门(可以只是部门的名称或类(class)部门的对象)和他的薪水。ElvisSoftwareEngineering1000SambaMechanicalEngineering2000BambaIndustrialEngineering3000BisliMedicalEngineering4000KinderElectricalEngineering1000ElvisSoftwareEngineering9999现在我想按名称对它们进行排序并将结果放入队列中。然后将队列放入map中,从下到上排序所以排序后

Java:如何使用不同的 equals 定义执行列表操作?

Java:如何使用不同的equals定义执行列表操作?我有两个通用POJO列表。我需要根据比较列表中POJO的不同方式对列表执行一些集合操作。例如,如果我的POJO具有以下结构:publicclassGenericPojo{privateStringid;privateStringaddress;privateStringcity;privateStringcountry;privateStringextraDetails;}(使用适当的getter和setter)给定List1和List2,我将如何找到:List1-List2(如果ID相等,GenericPojo类就相等)List1