给出以下参数:
boolean a = true ;
boolean b = false ;
boolean c = true ;
Run Code Online (Sandbox Code Playgroud)
我想要这个版本的最小代码:
if ( ( a && ! b) || ( ! a && b) ) {
z1 += 99 ;
}
if (a ^ b) {
z1 += 19 ;
}
if ( ( a && b) || ( ! a && ! b) ) {
z1 += 118;
}
Run Code Online (Sandbox Code Playgroud)
需要修改什么?
如何在不使用比较器的情况下在java中对ArrayList进行排序.
我已经使用过比较器,它对我来说不合适,意味着数据不是特别的方式.
我有一个包含以下属性的数组列表...
getTotal(),
getID(),
getRank(),
getItemName(),
getFinalRank()
Run Code Online (Sandbox Code Playgroud)
我把这一切都塞进了一个arraylist itemWiseDetails
现在我想制作poi报告并显示所有这些细节,但根据该itemName的排名.还有一件事,我的排名是在String中,所以当我尝试根据这个排名进行排序时,它将N/A数据作为0等级,因此它首先显示然后显示第一个排名,然后显示第二个排名然后继续...
所以,我想在没有比较器的情况下对这个itemWiseDetails列表进行排序
提前致谢,
我已经像这样实现了Comparator
public int compareTo(Object itemDetailVO)
{
if (!(itemDetailVOinstanceof ItemDetailVO)) throw new ClassCastException("AItemDetailVOobject expected.");
int otherItemRank = Integer.parseInt(((ItemDetailVO) itemDetailVO).getRank().toString());
return Integer.parseInt(this.trLotRank.toString())- otherBidderRank;
}
Run Code Online (Sandbox Code Playgroud) 我无法使用我自己的Comparator实现通过Collections.sort()对我的集合进行排序.抛出的异常是 - >"IllegalArgumentException:比较方法违反了它的一般契约!在我的OrdersBean中,我已经覆盖了hashCode,如下所示:
@Override
public int hashCode() {
return this.getServiceOrderName().toUpperCase().hashCode();
}
Run Code Online (Sandbox Code Playgroud)
我没有过度使用equals()并仅使用Object类(不应该是我觉得的问题).
我已经将比较器实现为:
public static final Comparator<OrdersBean> ordersComparator=new Comparator<OrdersBean>() {
@Override
public int compare(OrdersBean first, OrdersBean second)
{
if(Double.parseDouble(first.getPriority())<Double.parseDouble(second.getPriority()))
return -1;
else
if(Double.parseDouble(first.getPriority())>Double.parseDouble(second.getPriority()))
return +1;
else
{
if((first.getPlatformType().equalsIgnoreCase("EV-DO Carrier ADD")) &&
(second.getPlatformType().equalsIgnoreCase("EV-DO Carrier ADD")))
return -1;
if((first.getPlatformType().equalsIgnoreCase("T1 Augment")) &&
(second.getPlatformType().equalsIgnoreCase("T1 Augment")))
return -1;
if(first.getPlatformType().equalsIgnoreCase("EV-DO Carrier ADD"))
return -1;
else
if(second.getPlatformType().equalsIgnoreCase("EV-DO Carrier ADD"))
return +1;
else
if(first.getPlatformType().equalsIgnoreCase("T1 Augment"))
return -1;
else
if(second.getPlatformType().equalsIgnoreCase("T1 Augment"))
return +1;
else
return -1;
}
}
}; …Run Code Online (Sandbox Code Playgroud) java.util.Set API声明:
集合不包含元素对e1和e2,使得e1.equals(e2)
但据我所知,TreeSet用于Comparable/Comparator确定e1和e2是否重复.我错过了什么吗?
这是我写的比较器,用于根据成本对节点进行排序.
public class MyCostComparator implements Comparator<Node>{
public int compare(Node a, Node b){
if(a.pathCost > b.pathCost)
return 1;
else
return -1;
}
}
Run Code Online (Sandbox Code Playgroud)
我发现它的行为在我的机器(Java 1.7)和Uni的服务器(Java 1.5)上是不同的.但是,当我做到它:
if(a.pathCost >= b.pathCost) ,它似乎在1.5上工作正常,但1.7的另一种方式.
另外,当值相等时,NOT返回零的缺点是什么?
这是我正在使用的比较器:
import java.util.Comparator;
public class StringComparator implements Comparator
{
public int compare(String obj1, String obj2)
{
String delimeter = " ";
String nameSplit1[] = obj1.split( delimeter );
String nameSplit2[] = obj2.split( delimeter );
return nameSplit1[1].compareTo(nameSplit2[1]);
}
}
Run Code Online (Sandbox Code Playgroud)
这是主要文件:
import java.util.*;
public class StringCompare
{
public static void main( String args[] )
{
List<String> stringList = new ArrayList<String>();
String delimeter = " ";
stringList.add( "Seven Clocks" );
stringList.add( "Twelve Beds" );
stringList.add( "Eight Frogs" );
Collections.sort( stringList, new StringComparator() );
for …Run Code Online (Sandbox Code Playgroud) 我需要在Java中实现几个比较器.
我有很多已知类别,A1,A2,A3,... An,所有扩展类A.我想要的是一个基于Guava的比较器类Ordering,如下所示:
Ordering<A> sorterType1 = new Ordering<A>() {
// Here, provide a Set or something similar that keeps in memory
// the class types and the associated priority.
@Override
public int compare(A left, A right) {
// return -1 if class of left has an higher priority wrt class of right;
// return 0 if class of left has the same priority wrt class of right;
// return …Run Code Online (Sandbox Code Playgroud) 现在我使用Comparator对我的对象进行排序.我有列表中的项目如下
FIRST ITEM
SECOND ITEM
THIRD ITEM
LAST ITEM
FORTH ITEM
Run Code Online (Sandbox Code Playgroud)
比较器代码是:
public static Comparator<PartyResultVO> sortData = new Comparator<PartyResultVO>()
{
public int compare(VO vo1, VO vo2)
return (vo1.getName()).compareTo(vo2.getName());
};
Run Code Online (Sandbox Code Playgroud)
它是完美的排序.但我想要的是我需要把名字放在最后的项目LAST ITEM.如何我只能排除那个对象和最后的位置.有什么办法可以做到这一点.
请帮帮我.谢谢你...
我已经为Java的TreeSet函数创建了一个比较器类,我希望用它来命令消息.这个类看起来如下
public class MessageSentTimestampComparer
{
/// <summary>
/// IComparer implementation that compares the epoch SentTimestamp and MessageId
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
/// <returns></returns>
public int compare(Message x, Message y)
{
String sentTimestampx = x.getAttributes().get("SentTimestamp");
String sentTimestampy = y.getAttributes().get("SentTimestamp");
if((sentTimestampx == null) | (sentTimestampy == null))
{
throw new NullPointerException("Unable to compare Messages " +
"because one of the messages did not have a SentTimestamp" +
" Attribute");
}
Long epochx = Long.valueOf(sentTimestampx);
Long epochy = Long.valueOf(sentTimestampy); …Run Code Online (Sandbox Code Playgroud) 我对此很陌生,如果这是一个陈腐的问题,那就很抱歉.我有一个ArrayList,其中Node是一个自定义类.这是我定义它的方式:
static class Node implements Comparable<Node> {
String nodeName;
String[] borderingNodes;
public Node(String nodeName, String[] borderingNodes) {
this.nodeName = nodeName;
this.borderingNodes = borderingNodes;
}
public int compareTo(Node node) {
if(borderingNodes.length > node.borderingNodes.length) {
return 1;
}
if(borderingNodes.length == node.borderingNodes.length) {
return 0;
}
if(borderingNodes.length < node.borderingNodes.length) {
return -1;
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我尝试做一个Arrays.sort(inputNodes)inputNodes是一个ArrayList ...但是我得到了错误:
no suitable method found for sort(ArrayList<Node>)
Arrays.sort(inputNodes);
Run Code Online (Sandbox Code Playgroud)
我该如何正确地做到这一点?我的排序btw ...必须按照boundingNodes数组的大小排序.
comparator ×10
java ×10
sorting ×3
arraylist ×2
compare ×2
collections ×1
comparable ×1
compareto ×1
exception ×1
guava ×1
javadoc ×1
object ×1
operators ×1
string ×1
treeset ×1