我有一堂java课.. 公共类response_message {
private String message;
private String rejectCode;
private int ruleSeqNo;
private String contInd;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getRejectCode() {
return rejectCode;
}
public void setRejectCode(String rejectCode) {
this.rejectCode = rejectCode;
}
public int getRuleSeqNo() {
return ruleSeqNo;
}
public void setRuleSeqNo(int ruleSeqNo) {
this.ruleSeqNo = ruleSeqNo;
}
public String getContInd() {
return contInd;
}
public void setContInd(String contInd) {
this.contInd = contInd;
}
}
然后是它的对象数组以及字符串数组
private List<response_message> responseMessage = new ArrayList<response_message>();
private String[] reqRejects;
public String[] getReqRejects() {
return this.reqRejects;
}
public void setReqRejects(String[] reqRejects) {
this.reqRejects = reqRejects;
}
我的要求是使用模型字符串数组 reqRejects 对此responseMessage对象数组进行排序,然后使用ruleSeqNo(升序)
例如。 输入对象数组
留言 | 拒绝代码 | 规则序列号 | 续工业 |
---|---|---|---|
abcd | 60 | 101 | 是 |
cdef | 40 | 300 | 是 |
xyz | 41 | 280 | 是 |
133 | 41 | 270 | 是 |
56f | 40 | 275 | 是 |
677 | 60 | 102 | 是 |
hfdd | A5 | 400 | 是 |
模型字符串数组
拒绝代码 |
---|
A5 |
40 |
60 |
41 |
响应消息对象数组具有拒绝代码列。而reqRejects字符串数组(拒绝代码)就是模型数组。因此,基本上,需要首先按照与拒绝代码模型字符串数组列出的顺序相同的顺序在拒绝代码列上对对象数组进行排序。然后是规则序列号。
输出排序后的对象数组应该是
留言 | 拒绝代码 | 规则序列号 | 续工业 |
---|---|---|---|
hfdd | A5 | 400 | 是 |
56f | 40 | 275 | 是 |
cdef | 40 | 300 | 是 |
abcd | 60 | 101 | 是 |
677 | 60 | 102 | 是 |
133 | 41 | 270 | 是 |
xyz | 41 | 280 | 是 |
目前我已经完成了比较器,如下所示,它仅对序列号进行排序
responseMessage.sort(Comparator.comparingInt(m -> m.getRuleSeqNo()));
思考如何添加基于模型字符串数组的排序。
你可以这样做。
List<String> recRejects = List.of("A5", "40", "60", "41");
List<ResponseMessage> list = new ArrayList<>(
List.of(new ResponseMessage("abcd", "60", 101, "Y"),
new ResponseMessage("cdef", "40", 300, "Y"),
new ResponseMessage("xyz", "41", 280, "Y"),
new ResponseMessage("133", "41", 270, "Y"),
new ResponseMessage("56f", "40", 275, "Y"),
new ResponseMessage("677", "60", 102, "Y"),
new ResponseMessage("hfdd", "A5", 400, "Y")));
list.sort(Comparator
.<ResponseMessage>comparingInt(msg -> recRejects.indexOf(msg.getRejectCode()))
.thenComparing(ResponseMessage::getRuleSeqNo));
list.forEach(System.out::println);
打印
hfdd A5 400 Y
56f 40 275 Y
cdef 40 300 Y
abcd 60 101 Y
677 60 102 Y
133 41 270 Y
xyz 41 280 Y
Comparator.comparingInt
对拒绝代码指定顺序的索引进行排序。Comparator.thenComparing
对下一个字段进行排序。