Estoy tratando de eliminar uno de los elementos en la lista vinculada.

private LinkedList<Item> items = new LinkedList<>();

items.add(new Item("Movie1", "2010", "2"));
items.add(new Item("Movie1", "2010", "2"));

Intento verificar si el elemento existe en la lista.

Si el artículo existe, elimínelo.

Solo elimina todo el artículo.

Solo quiero eliminar un elemento Entonces, el resultado debería ser después de eliminarlo.

[Movie1, 2010, 2];

¿Hay alguna manera de que pueda hacer eso?

Gracias.

2
salamander 5 may. 2020 a las 15:45

2 respuestas

La mejor respuesta

Utilice remove (int index)

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");
        items.add(item1);
        items.add(item1);
        System.out.println("Before: ");
        System.out.println(items);
        for (int i = 0; i < items.size(); i++) {
            if (items.get(i).equals(item1)) {
                items.remove(i);
                break;
            }
        }
        System.out.println("After: ");
        System.out.println(items);
    }
}

Salida:

Before: 
[Name: Movie1, Year: 2010, ID: 2, Name: Movie1, Year: 2010, ID: 2]
After: 
[Name: Movie1, Year: 2010, ID: 2]
1
Arvind Kumar Avinash 5 may. 2020 a las 13:00

También puede usar la lista Colecciones contiene método y luego eliminarlo.

Item item1 = new Item("Movie1", "2010", "2");
if(items.contains(item1){
  items.remove(item1)
}

Además, para que el código anterior funcione, debe anular el código hash y el método igual en el elemento POJO.

0
VIrtual Host 5 may. 2020 a las 13:25