Issue
I am programming in java. Say I have an custom object Item
class Item
{
Integer id;
BigDecimal itemNumber;
}
I have list of Items.
List<Item> items = new ArrayList<>();
Now, What is best way in java to know, list of Items
contain some Items
with same value for itemNumber
.
Solution
To search for a specific item with some item number:
//result list
List<Item> itemsWithSameNumber = new ArrayList<>();
for (Item item : items) {
if (item.getItemNumber().equals(yourKey)) {
itemsWithSameNumber.add(item);
}
}
To get lists of items for all item numbers:
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);
}
Answered By - darijan
Answer Checked By - Marilyn (JavaFixing Volunteer)