2017-08-03 24 views
-3

我有串這樣的名單是:Java列表存儲列表中的元素,並在JSF頁面的數據表顯示它們

List<String> lista = Arrays.asList("Water","Pomegranate","Fish","Potato","Milk","Grape","steaks","parsley");//The list is big of that 

此列表重複此類別中各4次 我想每個元素下獲取其類別列,因爲這在JSF頁面:

Drinks  Fruits   Meat  Vegetables 

Water.  Pomegranate. Fish.  Potato 
Milk.  Grape.   steaks. parsley 

       ِِِِ... the others ... 

創建實體類:

public class Entity 
{ 
     private String drink; 
     private String fruit; 
     private String meat; 
     private String vegetable; 
     // getter and setter 
} 

如何做到這一點?

我想顯示元件0,4,8,12 ..在在第四列等的第三列和元素3,7,11,15第二列和元素2,6,10,14第一列和元素1,5,9,13

每個元素必須是根據其類別

  <p:layout fullPage="true"> 
       <h:form> 
         <p:dataTable var="data" value="#{bean.list}"> 
          <p:column headerText="Drinks" > 
           #{data.drink} 
          </p:column> 
         <p:column headerText="Fruits" > 
           #{data.fruit} 
          </p:column> 

         <p:column headerText="Meats" > 
           #{data.meat} 
          </p:column> 

         <p:column headerText="Vegis" > 
           #{data.vegetable} 
          </p:column> 

         </p:dataTable> 

        </h:form> 

      </p:layout> 
+0

做什麼?你在問什麼? –

+0

將列表中的每個元素提取到其類別 – Wasfy

+0

**問題**是? – Kukeltje

回答

0

該列表不知道有關類別的任何內容。您需要爲您自己的每個類別定義一個特定的索引。

final int CATEGORY_DRINK = 0; 
final int CATEGORY_FRUIT = 1; 
final int CATEGORY_MEAT = 2; 
final int CATEGORY_VEGETABLE = 3; 
final int CATEGORY_COUNT = 4; 

int repeat = list.size()/CATEGORY_COUNT; //2 
for(int i = 0; i < repeat; i++) { 
    int offset = i * CATEGORY_COUNT; 
    String drink = list.get(CATEGORY_DRINK + offset); 
    String fruit = list.get(CATEGORY_FRUIT + offset); 
    String meat = list.get(CATEGORY_MEAT + offset); 
    String vegi = list.get(CATEGORY_VEGETABLE + offset); 
} 

或者,您可以嘗試使用其他數據結構。可以使用映射將類別映射到值列表。

+0

感謝您的回答它將幫助我更多地將它們檢索到jsf/primefaces數據表。你的答案lista.length()中的 – Wasfy

0

你可以這樣說:

for(int i=0; i<lista.size();i=+4){ 
    for(int j=0; j<4; j++){ 
    if(j==0){ 
     string obj = lista.get(i+j); 
     //add the string to the first list 
    } 
    if(j==1){ 
     string obj = lista.get(i+j); 
     //add the string to the second list 
    } 
    if(j==2){ 
     string obj = lista.get(i+j); 
     //add the string to the third list 
    } 
    if(j==3){ 
     string obj = lista.get(i+j); 
     //add the string to the forth list 
    } 
    } 
} 
+0

必須是lista.size()併發送你的代碼,但不管怎樣都不會執行thanls。 – Wasfy

相關問題