我在java编程。假设我有一个自定义对象项目
class Item
{
Integer id;
BigDecimal itemNumber;
}
我有物品清单。
List<Item> items = new ArrayList<>();
现在,在java中知道什么是最好的方法,Items
列表包含Items
具有相同值的itemNumber
。
答案 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
的itemNumber
个itemNumber
Java8
排序所有人?Java
匹配的所有元素?无论如何,你有几种方法可以实现这个目标:
Predicates
to filter Comparators
to sort。 BigInteger yourValue = // your desired value
List<Item> result = new ArrayList<Item>();
for (Item item : items) {
if (item.itemNumber.equals(yourValue)) {
item.add(item);
}
}
)。或者,如果您有参考值,请使用普通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以比较大十进制后的对象