Hola estoy haciendo una tienda para los detalles del estudiante y quería algunas opiniones sobre qué colección usar. La tienda tendrá detalles tales como nombre, número, dirección y correo electrónico. La tienda se imprimirá en un archivo de texto donde puedo cargar, guardar, editar y eliminar los detalles en el archivo de texto. Nunca he hecho esto antes y no, si hay restricciones para presentar I/O al usar colecciones. Así que realmente agradecería los comentarios. Gracias por adelantado.¿La mejor colección para guardar los detalles del estudiante?
Respuesta
Si estuviera en su lugar,
entonces habría creado una clase frijol dicen Student
y para colecciónArrayList<Student> student = new ArrayList<Student>();
y como ArrayList
es serializado así que ningún problema para la escritura de disco y una class
para todos IO
operaciones.
Para clasificaciónArrayList
por propiedad de objetolook
A menos que se requieran algunas capacidades especiales de "ubicación rápida", como buscar por apellido o por ID de estudiante, una lista sería una colección apropiada para usar.
List<Student> students = new ArrayList<Student>();
Si necesitas organizar sus estudiantes por algún atributo, por ejemplo, mediante identificación de estudiante, considere el uso de LinkedHashMap
:
Map<String,Student> studentById = new LinkedHashMap<String,Student>();
LinkedHashMap
le da un orden predecible de iteración. Puede usar un HashMap<K,V>
normal, pero el orden de iteración será arbitrario. Finalmente, podría usar un TreeMap<K,V>
, que basaría el orden de iteración en el orden de las claves.
creo que esto causará un problema grave en el caso mapa si no anula correctamente iguales/código hash. – Woot4Moo
@ Woot4Moo Esto es correcto, si el OP usa su propia clase para claves, necesitaría tratar con equals/hashCode. Es por eso que sugerí usar 'String's, que son excelentes claves hash. – dasblinkenlight
Bueno, son excelentes teclas en la medida en que el hash está garantizado. http://www.infoq.com/presentations/effective-api-design/ para ver la opinión de Josh Bloch sobre Strings as Keys. Es bastante informativo para crear API – Woot4Moo
Bueno, si tiene que ser serializable, es decir, que puede escribirlo en el disco, puede usar List
. Ahora, antes de que alguien grite, no puede serializar un List
que sea correcto, pero tampoco puede crear una instancia de List
. Como sabemos que todas las subclases conocidas de List
son serializables, puede emitir de forma segura. En términos de cómo almacenar los datos List<Student>
debería estar bien.
EDITAR
Parece haber cierta confusión aquí. En los lenguajes orientados a objetos, sabemos que la relación is-a
es verdadera para los objetos especificados en una jerarquía. Entonces, en la API de Java tenemos una interfaz llamada List
, esta interfaz tiene clases que la implementan, por ejemplo, ArrayList
. Esto pone ArrayList
en la jerarquía de List
. Desde ArrayList
implementa Serializable
y sabemos que no puede instanciar un objeto marcado con la interfaz de palabra clave (en Java). Podemos usar el casting al Serialize
cualquier implementación conocida de List
. La razón por la cual esto funcionará es que la implementación (es decir, el objeto concreto) que se transmite está garantizada para ser serializable.
bien, así que no puedes serializar una lista. Entonces, ¿tendré problemas para guardar y cargar la tienda si uso una lista? – Pendo826
@ Pendo826 no. Ni siquiera puede crear una 'Lista', puede crear una 'Lista de Arreglos' que implemente Serializable (por defecto en la API) que' es-una'' Lista'. Esto es tarea, así que no voy a dar una implementación directa. Pero esta es una de las piedras angulares de Object Oriented Languages. – Woot4Moo
En el caso más simple, un java.util.List
hará exactamente lo que quiera. Sin embargo, si desea poder encontrar entradas en la colección rápidamente (para respaldar sus requisitos de actualización), también debería consultar java.util.Map
. El mapa le permite navegar rápidamente a un registro en particular sin tener que iterar sobre la colección completa, mientras que con una Lista deberá mirar a cada alumno de la colección hasta encontrar el que le interese.
A menos que se hayan ordenado. – Daniel
- 1. Algoritmo de programación de tiempo del estudiante
- 2. Para obtener los detalles de la tabla
- 3. @ Html.DisplayNameFor para los detalles modelo
- 4. Buscando los detalles del tipo para page_stories_by_story_type & page_consumptions_by_consumption_type
- 5. ¿Cómo puedo leer los detalles del archivo?
- 6. Guardar el objeto heredado para separar la colección en Mongoid
- 7. error "estudiante de calificación adicional" :: miembro "estudiante" [-permisivo] "
- 8. cómo guardar los detalles de inicio de sesión de la aplicación de Android?
- 9. Mejor colección para búsqueda rápida de cadenas
- 10. recompilación con -Xlint: desaprobación para los detalles
- 11. Mostrar detalles del importador
- 12. cómo guardar detalles de usuario en un parcial en mvc
- 13. Guardar subconjunto de MongoDB colección a otra colección
- 14. matplotlib - aumentar la resolución para ver detalles
- 15. Las abstracciones no deben depender de los detalles. Los detalles deben depender de las abstracciones
- 16. ¿Es mejor usar Lista o Colección?
- 17. Cómo modelar Estudiante/Clases con DynamoDB (NoSQL)
- 18. jpa eliminación del hijo de la colección
- 19. cómo recuperar los detalles del archivo de audio en iPhone
- 20. ¿Qué es mejor para un estudiante que programa en C++ para aprender a escribir GUI: C# contra QT?
- 21. Manipulación de los detalles del encabezado de WCF
- 22. ¿Cuál es la mejor manera de guardar los mejores puntajes en el iPhone para evitar piratear?
- 23. ¿Dónde está el mejor lugar para guardar la contraseña del sitio web?
- 24. no ¿Hay alguna API para obtener los detalles del tren de ferrocarril del Servicio
- 25. Obtenga los detalles del carrito de compras en Magento
- 26. ¿Consultar los detalles del esquema de una tabla en PostgreSQL?
- 27. Backbone.js Escenario de detalles maestros
- 28. ¿Cuál es la mejor práctica para almacenar detalles de conexión de base de datos en .NET?
- 29. mejor manera de convertir la colección a la cadena
- 30. Ideas para el proyecto de programación paralela estudiante
Solo has visto tu publicación ahora hombre. ¿Se puede ordenar una lista de arreglos por nombre? no se pregunta en el resumen, pero creo que podría ser una ventaja tener un archivo de texto ordenado. – Pendo826
@ Pendo826 aquí http://stackoverflow.com/questions/2784514/sort-arraylist-of-custom-objects-by-property –
muy buen ejemplo. :) – Pendo826