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