Ho una lista di circa 100.000 impiegati in Java. Ora voglio eliminare rapidamente un determinato oggetto dipendente dall'elenco. Quali sono i modi possibili per farlo senza iterare l'intera lista? (Se eseguo l'iterazione di ciascun oggetto, confronta i dettagli, quindi elimina: questo scenario richiede molto tempo)Come eliminare un particolare oggetto List in Java?
risposta
È necessario trovare un modo per trovare rapidamente l'oggetto. Si potrebbe
- hanno un ArrayList ordinato e quindi eseguire una ricerca binaria con Collections.binarySearch
O(log N)
Nota: in realtà la rimozione di un elemento da un ArrayList èO(n)
Mentre LinkedList comeO(1)
per rimuovere, una ricerca binaria su di esso sarebbe inutile cioè molto più lento diO(N)
- si potrebbe avere invece un Set di dipendenti di hash e la rimozione sarebbe
O(1)
ammortizzata. È possibile utilizzare unLinkedHashSet
se si desidera conservare un ordine come l'ordine di inserimento. - potresti rendere l'oggetto mutabile e avere un campo come
enabled
che hai impostato sufalse
invece di rimuoverlo. Si potrebbe rimuoverlo in seguito come un processo batch in un momento (durante la notte o durante il fine settimana)
@TimBiegeleisen SO non è però Quora https://www.quora.com/Is-it-true-that-after-Brexit-Pluto-will-be-a-planet- in-the-UK-again;) –
Ora voglio cancellare un particolare oggetto dipendente dalla lista ...
Si può solo utilizzare List.remove per fare questo
... rapidamente
In pratica, anche anche se la rimozione dell'elemento potrebbe essere un'operazione O(1)
, l'iterazione su tutta la lunghezza dell'elenco è O(n)
ed è, come si sospetta, non molto veloce.
Ritengo che il problema sarebbe meglio essere servito dalla potenza di una mappa di hash. Questo ha una costante ricerca e tempi di rimozione. La classe LinkedHashMap potrebbe soddisfare le tue esigenze. Mantiene l'ordine di inserimento nello stesso modo di un elenco collegato, ma ha anche l'inserimento e la cancellazione di un tempo costante.
- 1. Come eliminare un oggetto in un set
- 2. Crea un nuovo oggetto List in python
- 3. Come recuperare un oggetto List dal firebase in Android
- 4. Come aggiungere un elemento in List durante l'iterazione in java?
- 5. Come convertire List per JSON in Java
- 6. Come verificare se un oggetto ha un metodo particolare?
- 7. Come posso sapere se un oggetto implementa un metodo particolare?
- 8. Come si ottiene un oggetto derivato particolare in un elenco <T>?
- 9. List vs Map in Java
- 10. Come eliminare un oggetto usando PK in Nhibere?
- 11. Come eliminare un oggetto di lavoro in TFS 2012?
- 12. Come posso eliminare un oggetto con DbContext in C#?
- 13. Verifica se un oggetto record attivo particolare si trova in un particolare "ambito"
- 14. Come leggere 'List separator' dal SO in Java?
- 15. Lancio di un oggetto java su oggetto [] in Scala
- 16. Come eliminare un oggetto utilizzando Django Resto quadro
- 17. Come convalidare un oggetto JSON in java?
- 18. Come istanziare un oggetto in java?
- 19. Come simulare un oggetto Java in Clojure
- 20. Come creare un oggetto BLOB in java?
- 21. Java: come convertire un oggetto File in un oggetto String in java?
- 22. RecyclerView android: Ottenere un oggetto in una posizione particolare
- 23. Come eliminare un set di lavoro java in Eclipse
- 24. Come eliminare solo il contenuto di un file in java?
- 25. Sincronizzazione su un oggetto in Java
- 26. Come eliminare una proprietà da un oggetto Emberjs?
- 27. Come utilizzare AWS iOS SDK per eliminare un oggetto?
- 28. django tastypie solo recuperare un particolare campo di un particolare oggetto
- 29. Come eliminare un oggetto dall'array all'interno del ciclo foreach?
- 30. come convertire un oggetto dict python in un oggetto equivalente java?
UR_object_List.remove (oggetto) –