有以下数据:
编号,版本,状态
Z001,A.1,Inwork
Z001,A.2,Inwork
Z001,A.3,Review
Z001,B.1,Inwork
Z001,B.2,Released
Z001,C.1,Inwork
Z001,C.2,Review
Z001,C.3,Review
Z001,C.4,Released
Z001,D.1,Inwork
Z001,D.2,Review只取出同系列版本号的状态不为Released的最新版如下:
Z001,A.3,Review
Z001,D.2,Review我想到的方法是用MAP将同系列的版本号摆在一块:
MAP(A , A.1+Inwork;A.2+Inwork;A.3+Review)
MAP(B , B.1+Inwork;B.2+Released)
MAP(C , C.1+Inwork;C.2+Review;C.3+Review;C.4+Released)
MAP(D , D.1+Inwork;D.2+Review)
然后再提取字符串中没有Released的A和D字符串后拆解得到结果
请教高手有没有比较简单的方法?
编号,版本,状态
Z001,A.1,Inwork
Z001,A.2,Inwork
Z001,A.3,Review
Z001,B.1,Inwork
Z001,B.2,Released
Z001,C.1,Inwork
Z001,C.2,Review
Z001,C.3,Review
Z001,C.4,Released
Z001,D.1,Inwork
Z001,D.2,Review只取出同系列版本号的状态不为Released的最新版如下:
Z001,A.3,Review
Z001,D.2,Review我想到的方法是用MAP将同系列的版本号摆在一块:
MAP(A , A.1+Inwork;A.2+Inwork;A.3+Review)
MAP(B , B.1+Inwork;B.2+Released)
MAP(C , C.1+Inwork;C.2+Review;C.3+Review;C.4+Released)
MAP(D , D.1+Inwork;D.2+Review)
然后再提取字符串中没有Released的A和D字符串后拆解得到结果
请教高手有没有比较简单的方法?
package sh.pl;public class CscxxxData {
private String id;
private String ver;
private String fullVer;
private String status;
public CscxxxData(String id, String ver, String fullVer, String status) {
setId(id);
setVer(ver);
setFullVer(fullVer);
setStatus(status);
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getVer() {
return ver;
}
public void setVer(String ver) {
this.ver = ver;
}
public String getFullVer() {
return fullVer;
}
public void setFullVer(String fullVer) {
this.fullVer = fullVer;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
public static void main(String[] args) {
List<CscxxxData> list = new ArrayList<CscxxxData>();
CscxxxData cd = new CscxxxData("Z001", "A", "A.1", "Inwork");
list.add(cd);
cd = new CscxxxData("Z001", "A", "A.2", "Inwork");
list.add(cd);
cd = new CscxxxData("Z001", "A", "A.3", "Review");
list.add(cd);
cd = new CscxxxData("Z001", "A", "A.4", "Released");
list.add(cd);
Collections.sort(list, new Comparator<CscxxxData> () {
@Override
public int compare(CscxxxData arg0, CscxxxData arg1) {
if (arg0.getStatus() == "Released") {
return 1;
}
if (arg1.getStatus() == "Released") {
return -1;
}
return arg1.getFullVer().compareTo(arg0.getFullVer());
}
});
System.out.println(list.get(0).getFullVer());
}
B,C,D可以向你说的那样用个Map记下,然后遍历都来一遍。
getStatus() == "Released改成
equals把.