根据对象的ArrayList对对象进行分类

时间:2013-07-21 18:16:07

标签: java arraylist hashmap

我有一个产品的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;

    }


}

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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;

}