0

我有一个产品的 ArrayList,每个产品都有一个类别作为属性(因此每个类别可以有很多产品)。我只需要格式化数据,以便根据类别属性对产品进行分类。

我认为 HashMap 会很有用,因为我可以只使用类别作为键,使用产品的 ArrayList 作为值。

如果这是正确的方法,有人可以帮助我将我的 ArrayList 转换为 HashMap 所涉及的逻辑,正如我所描述的那样?或者也许有更好的方法来处理它。

/** 更新 **/

这是一个示例方法,但我不确定如何使逻辑发生:

private HashMap<String, ArrayList> sortProductsByCategory (ArrayList<Product> productList) {

    // The hashmap value will be the category name, and the value will be the array of products
    HashMap<String, ArrayList> map;

    for(Product product: productList) {

        // If the key does not exist in the hashmap
        if(!map.containsKey(product.getCategory()) {
            // Add a key to the map, add product to new arraylist
        }
        else {
            // add the product to the arraylist that corresponds to the key
        }
        return map;

    }


}
4

2 回答 2

0

是的,这是绝对有效的方法,因为您想从“一维”视图切换到“二维”。

于 2013-07-21T18:21:40.370 回答
0

可能是这样做的更好方法,但它似乎对我有用:

private HashMap<String, ArrayList<Product>> sortProductsByCategory (ArrayList<Product> arrayList) {

    HashMap<String, ArrayList<Product>> map = new HashMap<String, ArrayList<Product>>();

    for(Product product: arrayList) {

        // If the key does not exist in the hashmap
        if(!map.containsKey(product.getCategory().getName())) {
            ArrayList<Product> listInHash = new ArrayList<Product>();
            listInHash.add(product);
            map.put(product.getCategory().getName(), listInHash);
        } else {
            // add the product to the arraylist that corresponds to the key
           ArrayList<Product> listInHash = map.get(product.getCategory().getName());
           listInHash.add(product);

        }

    }

    return map;

}
于 2013-08-02T14:18:34.290 回答