在素数面数据表中显示哈希映射键和值

2022-09-01 17:15:50

我正在尝试在DataTable中显示Hashmap,以下是我正在尝试做的事情:我将有一些产品的选择菜单,以及数量的输入文本,一个“ajaxized”添加按钮,用于将产品及其数量添加到地图,以及一个显示摘要对话框的提交按钮,其中包含具有两列的DataTable: 产品名称和数量。我的哈希映射是

Map<Product,Integer> myMap = new HashMap<Product,Integer>();

对于ajaxized按钮和所有这些第一步,他们正在为我工作,我已经设置了所有内容,并且地图正确填充了所有剩余的内容,以显示数据。

提前致谢。


答案 1

您可以像这样创建类:

public class Product{
    private int id;
    private String productName;
    private int quantitiy;

    // add getters setters here
}

// add product id to map key
Map<Integer,Product> myMap = new HashMap<Integer,Product>();

public Map<Integer,Product> getProductMap() {
   return myMap;
}


public List<Product> getProducts() {
   return new ArrayList<Product>(myMap.values()_;
}

将数据表值添加到 getProducts() List

否则,产品作为映射键,

Map<Product,Integer> myMap = new HashMap<Product,Integer>();

public List<Map.Entry<Product, Integer>> getProducts() {
    Set<Map.Entry<Product, Integer>> productSet = 
                     myMap.entrySet();
    return new ArrayList<Map.Entry<Product, Integer>>(productSet);
}

像这样写primeface页面,

<p:dataTable value="#{productBean.products}" var="productEntry">
   <p:column>
      <h:outputText value="#{productEntry.key.productName}" />
   </p:column>
   <p:column>
       <h:outputText value="#{productEntry.value}" />
   </p:column>
</p:dataTable>

答案 2