如何计算列表中对其属性之一具有相同值的自定义对象的数量

Pra*_*kar 1 java collections arraylist

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

class Item
{
     Integer id;
     BigDecimal itemNumber;
}
Run Code Online (Sandbox Code Playgroud)

我有项目清单。

List<Item> items = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

现在,java 中最好的方法是什么,Items包含一些Items具有相同值的itemNumber.

dar*_*jan 5

要搜索具有某个项目编号的特定项目

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

for (Item item : items) {
    if (item.getItemNumber().equals(yourKey)) {
        itemsWithSameNumber.add(item);
    }
}
Run Code Online (Sandbox Code Playgroud)

要获取所有项目编号的项目列表:

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

//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
}
Run Code Online (Sandbox Code Playgroud)

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

for (BigDecimal key : map.keySet()) {
    List<Item> listOfElementsWithSameKey = map.get(key);
}
Run Code Online (Sandbox Code Playgroud)