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;
}
@Override
public int hashCode() {
return Objects.hash(name, year, id);
}
@Override
public boolean equals(Object obj) {
Item other = (Item) obj;
return this.name.equals(other.name) && this.year.equals(other.year) && this.id.equals(other.id);
}
@Override
public String toString() {
return "Name: " + name + ", Year: " + year + ", ID: " + id;
}
}
public class Main {
public static void main(String[] args) {
LinkedList<Item> items = new LinkedList<Item>();
Item item1 = new Item("Movie1", "2010", "2");
Item item2 = new Item("Movie2", "2020", "3");
items.add(item1);
items.add(item1);
items.add(item2);
System.out.println("Before: ");
System.out.println(items);
remove(items, item1);
remove(items, item2);
System.out.println("After: ");
System.out.println(items);
// Trying to remove item1 again
remove(items, item1);
System.out.println("Result: ");
System.out.println(items);
}
/**
* If list contains more than one occurrence of item, removes the first
* occurrence of item from list
*
* @param items from which the first occurrence of item has to be removed
* @param item
*/
static void remove(LinkedList<Item> items, Item item) {
for (int i = 0; i < items.size(); i++) {
if (items.get(i).equals(item)) {
if (items.subList(i + 1, items.size()).contains(items.get(i))) {
items.remove(i);
break;
}
}
}
}
}
Вывод:
Before:
[Name: Movie1, Year: 2010, ID: 2, Name: Movie1, Year: 2010, ID: 2, Name: Movie2, Year: 2020, ID: 3]
After:
[Name: Movie1, Year: 2010, ID: 2, Name: Movie2, Year: 2020, ID: 3]
Result:
[Name: Movie1, Year: 2010, ID: 2, Name: Movie2, Year: 2020, ID: 3]