有以下数据:
编号,版本,状态
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字符串后拆解得到结果
请教高手有没有比较简单的方法?

解决方案 »

  1.   


    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记下,然后遍历都来一遍。
      

  2.   

    e..最近vb写多了。
    getStatus() == "Released改成
    equals把.