如何计算列表中为其属性之一具有相同值的自定义对象的数量 [英] How to count number of custom objects in list which have same value for one of its attribute

查看:179
本文介绍了如何计算列表中为其属性之一具有相同值的自定义对象的数量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在用Java编程.假设我有一个自定义对象Item

I am programming in java. Say I have an custom object Item

class Item
{
     Integer id;
     BigDecimal itemNumber;
}

我有物品清单.

List<Item> items = new ArrayList<>();

现在,什么是Java最好的了解方法,Items的列表包含与itemNumber值相同的一些Items.

Now, What is best way in java to know, list of Items contain some Items with same value for itemNumber.

推荐答案

要搜索具有某些商品编号的特定商品:

//result list
List<Item> itemsWithSameNumber = new ArrayList<>();

for (Item item : items) {
    if (item.getItemNumber().equals(yourKey)) {
        itemsWithSameNumber.add(item);
    }
}

要获取所有物料编号的物料清单:

在这种情况下,您可以使用HashMap:

You can use a HashMap for this case:

//result map
HashMap<BigDecimal, List<Item>> map = new HashMap<>();

for (Item item : items) {
    List<Item> itemsWithSameNumber = map.get(item.getItemNumber());
    if (itemsWithSameNumber == null) { //does not exist in map yet
        itemsWithSameNumber = new ArrayList<Item>();
        map.put(item.getItemNumber(), itemsWithSameNumber);
    }
    itemsWithSameNumber.add(item); //now add the item to the list for this key
}

稍后,您可以遍历地图的键集并获取每个键的所有项目:

Later on, you can iterate over map's keyset and get all items for each key:

for (BigDecimal key : map.keySet()) {
    List<Item> listOfElementsWithSameKey = map.get(key);
}

这篇关于如何计算列表中为其属性之一具有相同值的自定义对象的数量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆