2014-12-29 86 views
1

我正在關注emaze功能異常以便從arraylist中進行分組。在下面的代碼中,我可以從地圖中進行分組。控制檯顯示分組元素。我需要將它們添加到數組列表中。從arraylist中獲取組列表

例如,回報裏德有120個元素,但分組地圖包含三個組,每個元素爲40個元素。

 List<LoanRepaymentSchedule> repay = loanService 
       .getLoanRepaymentScheduleById(groupLoan.getLoanId()); 

     Map<Integer, List<LoanRepaymentSchedule>> map = Groups.groupBy(
       repay, new Pluck<Integer, LoanRepaymentSchedule>(
         LoanRepaymentSchedule.class, "memberCount")); 
     System.out.println ("map.keySet().size() "+map.keySet().iterator()); 

     for (Integer key : map.keySet()) { 
      List<LoanRepaymentSchedule> pro = map.get(key); 
      System.out.println("Element-******* "+pro.size());   
      System.out.println("Element-******* "+pro.get(0));   

     } 

如何保存在象列表1,list2中,項目list3單獨的數組列表3個分組元素。

償還列表如下,

id 1 val 5 
    id 1 val 6 
    id 1 val 1 
    id 1 val 5 
    id 1 val 6 
    id 1 val 1 

我需要列表1作爲

id 1 val 5 
id 1 val 5 

列表2作爲

id 1 val 6 
id 1 val 6 

列表1作爲

id 3 val 1 
id 1 val 1 
+1

你需要什麼列表(1,2,3)? –

+0

瞭解id是關鍵嗎?和5或6是pro.get(0);? –

+0

你到底需要什麼?您已在地圖中存儲了不同的列表。這些列表不包含你想要的東西嗎? – Eran

回答

1

如果我理解正確,您想要將3個列表添加到單個列表中。

你可以簡單地做:

List<LoanRepaymentSchedule> output = new ArrayList<LoanRepaymentSchedule>(); 
    for (Integer key : map.keySet()) { 
     output.addAll(map.get(key));   
    } 

順便說一句,我不熟悉這個Groups類,但Java的8具有相同的功能更簡單的語法:

Map<Integer, List<LoanRepaymentSchedule>> = 
    repay.stream() 
     .collect(Collectors.groupingBy(LoanRepaymentSchedule::getMemberCount); 

假設LoanRepaymentSchedule有一個getMemberCount方法,通過該方法可將LoanRepaymentSchedule實例分組。

+0

我英文不好,他不是要求將所有數據保存在3個不同的列表中? –

+0

我更新了我的問題.pls看看 – DevGo

0
try this ? 

    ArrayList[] lists=new ArrayList[3]; 
    for (ArrayList list : lists) { 
     list=new ArrayList(); 
    } 
    boolean firstInsert=true; 
    int i=0; 
    for (Integer key : map.keySet()) { 
     List<LoanRepaymentSchedule> pro = map.get(key); 
     System.out.println("Element-******* "+pro.size());   
     System.out.println("Element-******* "+pro.get(0)); 
     try { 

      if (firstInsert) { 
       if (lists[0].isEmpty()) { 
        lists[0].add(pro); 
        break; 
       } 
       if (lists[1].isEmpty()) { 
        lists[1].add(pro); 
        break; 
       } 
       if (lists[2].isEmpty()) { 
        lists[2].add(pro); 
        firstInsert=false; 
        break; 
       } 
      } 

      if(pro.get(0)==lists[0].get(lists[0].size()-1)){lists[0].add(pro); 
     } 
      if(pro.get(0)==lists[1].get(lists[1].size()-1)){lists[1].add(pro); 
     } 
      if(pro.get(0)==lists[2].get(lists[2].size()-1)){lists[2].add(pro); 
     } 
     } catch (Exception e) { 
     } 


    } 
+0

然後第一個列表在你想要的數組循環中。如果它的工作,我沒有如何嘗試它。 –