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

时间:2015-08-04 12:00:13

标签: java arraylist collections

我在java编程。假设我有一个自定义对象项目

class Item
{
     Integer id;
     BigDecimal itemNumber;
}

我有物品清单。

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

现在,在java中知道什么是最好的方法,Items列表包含Items具有相同值的itemNumber

4 个答案:

答案 0 :(得分:4)

要搜索包含某个商品编号的特定商品

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

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

获取所有商品编号的商品列表:

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

//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
}

稍后,您可以迭代map的键集并获取每个键的所有项目:

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

答案 1 :(得分:1)

您并未真正指定您的含义包含Item

itemNumber

itemNumberitemNumber
  • Java8排序所有人?
  • 获取与Java匹配的所有元素?

无论如何,你有几种方法可以实现这个目标:

或者,如果您有参考值,请使用普通UPDATE myTable SET columnA = 'X' 和真人一样

SET rowcount 10000
Update myTable 
set columnA ='X'
where columnA <> 'X'

while @@rowcount>0

BEGIN
SET rowcount 10000
Update myTable 
set columnA ='X'
where columnA <> 'X'

end

SET rowcount 0

答案 2 :(得分:0)

覆盖类中的等于方法,并在项目列表中调用包含方法,该方法将调用项目的相等方法。

 class Item
    {
         Integer id;
         BigDecimal itemNumber;

          public boolean equals(Item item) {
          if (this.itemNumber.equals(item.itemNumber)) {
            return true;
        }
    // getter and setter

}

在列表检查中

  

items.contains(项目)

答案 3 :(得分:-1)

计算它们:

List<Item> items = new ArrayList<>();
int count=0;
int idToFind=88;
for(Item i:items){
  if(i.getId()==idToFind)
    count++;
}

获取另一个清单:

Item itemToFind;
List newList=list.contains(itemToFind);

并在类中重写equals以比较大十进制后的对象