[英]One type of item in list
我正在嘗試檢查列表中的項目類型是否已滿。
private LinkedList<Item> items = new LinkedList<>();
items.add(new Item("Movie1", "2020", "2"));//2 right there's the amount
items.add(new Item("Movie2", "2012", "3"));
items.add(new Item("Movie3", "2011", "3"));
items.add(new Item("Movie4", "2013", "3"));
我限制為 3。因此,如果數量為 3,則已滿。
當我說 3 是 Movie2,2020, 3
中的數量時。 我是說那三個。 誤會請見諒。
我只知道如何檢查其中一項是否已滿。 但是有多個是滿的。
我很難檢查它們。
任何人都可以幫忙嗎?
謝謝。
定義一個方法如下向列表中添加元素:
static void add(LinkedList<Item> items, Item item) {
boolean full = false;
for (Item e : items) {
if (e.equals(item) && e.getId().equals(String.valueOf(LIMIT)) && Integer.valueOf(item.getId()) >= LIMIT) {
full = true;
}
}
if (full) {
System.out.println("There is no room for " + item + " in the list");
} else {
items.add(item);
}
}
演示:
import java.util.LinkedList;
import java.util.Objects;
class Item {
String name, year, id;
public Item(String name, String year, String id) {
this.name = name;
this.year = year;
this.id = id;
}
public String getName() {
return name;
}
public String getYear() {
return year;
}
public String getId() {
return id;
}
@Override
public int hashCode() {
return Objects.hash(name, year);
}
@Override
public boolean equals(Object obj) {
Item other = (Item) obj;
return this.name.equals(other.name) && this.year.equals(other.year);
}
@Override
public String toString() {
return "[Name: " + name + ", Year: " + year + ", ID: " + id + "]";
}
}
public class Main {
final static int LIMIT = 3;
public static void main(String[] args) {
LinkedList<Item> items = new LinkedList<Item>();
add(items, new Item("Movie1", "2010", "1"));
add(items, new Item("Movie1", "2010", "2"));
add(items, new Item("Movie1", "2010", "3"));
add(items, new Item("Movie1", "2010", "3"));
add(items, new Item("Movie1", "2010", "4"));
add(items, new Item("Movie2", "2020", "2"));
items.stream().forEach(System.out::println);
}
static void add(LinkedList<Item> items, Item item) {
boolean full = false;
for (Item e : items) {
if (e.equals(item) && e.getId().equals(String.valueOf(LIMIT)) && Integer.valueOf(item.getId()) >= LIMIT) {
full = true;
}
}
if (full) {
System.out.println("There is no room for " + item + " in the list");
} else {
items.add(item);
}
}
}
Output:
There is no room for [Name: Movie1, Year: 2010, ID: 3] in the list
There is no room for [Name: Movie1, Year: 2010, ID: 4] in the list
[Name: Movie1, Year: 2010, ID: 1]
[Name: Movie1, Year: 2010, ID: 2]
[Name: Movie1, Year: 2010, ID: 3]
[Name: Movie2, Year: 2020, ID: 2]
注意:此解決方案基於id
字段不作為equals()
的一部分計算的要求,即如果兩個項目的name
和year
相等,則它們相等。
@Override
public int hashCode() {
return Objects.hash(name, year);
}
@Override
public boolean equals(Object obj) {
Item other = (Item) obj;
return this.name.equals(other.name) && this.year.equals(other.year);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.