2013-06-12 52 views
0

說喜歡我有一組類:煤礦是一個Set <CourseListing>組項目很好

CourseListing的一些示例結果如下:

Number Name   Product 
TRN-001 Sample Name1 prod1 
TRN-001 Sample Name1 prod2 
TRN-001 Sample Name1 prod3 
TRN-002 Sample Name2 prod1 
TRN-003 Sample Name3 prod1 

我怎樣才能從TRN產品-001分組到一個字段(即逗號分隔的字符串)?然後,它應該如下:

Number Name   Product 
TRN-001 Sample Name1 prod1, prod2, prod3 
TRN-002 Sample Name2 prod1 
TRN-003 Sample Name3 prod1 

下面是CourseListing類的一個示例:

public class CourseListing{ 
    private String Number, Name, Product; 
    public CourseListing(){ 
    } 
//getters and setters; 
} 

我使用的是List <CourseListing>

回答

0

看來你的TRN數字標識符,那麼你爲什麼不使用地圖而不是List?

當一個新產品已加入:

  • 如果代碼不存在添加條目(CourseListing.getTNR, CourseListing)

  • 如果它存在,修改現有CourseListing。

0

這裏是我會怎麼去了解它,注意它可能不是最好的解決方案,但它會組他們就像你解釋基礎上,COurseListing數。 1.創建一個單獨的類作爲對象類第一個列表(真是一個POJO

public class CourseListing { 
    private String number;  
    private String Name; 
    private String product; 
    public String getNumber() { 
     return number; 
    } 
    public void setNumber(String number) { 
     this.number = number; 
    } 
    public String getName() { 
     return Name; 
    } 
    public void setName(String name) { 
     Name = name; 
    } 
    public String getProduct() { 
     return product; 
    } 
    public void setProduct(String product) { 
     this.product = product; 
    } 
} 
  1. 創建第二類對象或使用現有一個像上面。現在你有拖對象爲每個組。

    CourseListing CourseListingNotGrouped =新CourseListing(); CourseListing CourseListingGrouped =新CourseListing();

  2. 遍歷第一個清單,並把它添加到你的第二個編號= TRN-001時的對象列表。

好運

0

可以遍歷收集和過濾所有CourseListingNumber EQ TRN-001

List<CourseListing> tempList = new ArrayList<>(); 
for(CourseListing c:courseListingList){ 
    if(c.getNumber().equals("TRN-001")) 
     tempList.add(c); 
} 

,你也可以使用 -

q-Link是Java集合操作庫,以儘量減少工作。

List<CourseListing> result = sf.forList(courseListing).filter().p("Number").eq().val("TRN-001").toList(); 
+0

嗯,我可以修改我的SQL,並使用「按名稱組」,我會得到類似的結果。我真正需要的是將產品轉移到一個大字符串中,列出該字段中的所有產品。 –

0

我解決了這個問題的另一種方式(通過更改設置通過而不是SQL結果生成列表的方式)。這仍然是一個有趣的問題,我同意我應該使用HashMap。謝謝您的幫助。

這裏是萬一有人代碼中有一個類似的問題:

conn = DriverManager.getConnection(url, userName, password); 

     stmt = conn.createStatement(); 
     ResultSet rset = null; 

     PreparedStatement pstmt = null; 

     pstmt = conn.prepareStatement("select * FROM CourseProduct " 
       + "INNER JOIN Course " 
       + "ON CourseProduct.number=Course.number " 
       + "inner join Product " 
       + "on CourseProduct.P_ID=Product.P_ID " 
       + "WHERE " 
       + "(superProduct = ? or ? ='') " 
       + "and (product = ? or ? ='') " 
       + "and (location = ? or ? ='') " 
       + "and (type = ? or ? ='') " 
       + "and (category = ? or ? ='') " 
       + "order by Course.number asc"); 

     pstmt.setString(1, superProduct); 
     pstmt.setString(2, superProduct); 
     pstmt.setString(3, product); 
     pstmt.setString(4, product); 
     pstmt.setString(5, location); 
     pstmt.setString(6, location); 
     pstmt.setString(7, type); 
     pstmt.setString(8, type); 
     pstmt.setString(9, category); 
     pstmt.setString(10, category); 


     rset = pstmt.executeQuery(); 

     String tempString = " "; 

     String tempNumber1=null, tempNumber2 = null; 

     while (rset.next()) { 
      // here we go 
      tempNumber1 = rset.getString("number"); 

      tempString+=", "+rset.getString("product"); 

      if (tempNumber1 == null ? tempNumber2 == null : tempNumber1.equals(tempNumber2)) { 

       courseListing.remove(courseListing.size()-1); 

       courseListing.add(new CourseListing(
         rset.getDouble("price"), 
         rset.getString("number"), 
         rset.getString("name"), 
         rset.getString("location"), 
         rset.getString("unit"), 
         rset.getString("duration"), 
         rset.getString("type"), 
         rset.getString("role"), 
         rset.getString("category"), 
         rset.getString("maxNumStudents"), 
         rset.getString("superProduct"), 
         rset.getString("subProduct"), 
         tempString)); 
      } 

      else { 
       tempString=rset.getString("product"); 
       tempNumber2 = rset.getString("number"); 

       courseListing.add(new CourseListing(
         rset.getDouble("price"), 
         tempNumber2, 
         rset.getString("name"), 
         rset.getString("location"), 
         rset.getString("unit"), 
         rset.getString("duration"), 
         rset.getString("type"), 
         rset.getString("role"), 
         rset.getString("category"), 
         rset.getString("maxNumStudents"), 
         rset.getString("superProduct"), 
         rset.getString("subProduct"), 
         tempString)); 

      } 
     } 
相關問題