Tengo una clase abstracta llamada sesiones. Conferencias y tutoriales se extienden sesiones. Entonces tengo una llamada de inscripción en clase que mantiene una lista de sesiones (conferencias y tutoriales). ¿Cómo se puede recorrer la lista de sesiones de la matrícula y devolver una lista de conferencias sólo de la lista de sesiones?
Mi siguiente pregunta es debo almacenar en lugar de 2 listas. Una lista de conferencias y una lista de tutoriales, en lugar de 1 lista de sesiones? Esto se debe a la lista de sesiones es inútil para mí y tengo que recorrer cada vez para obtener información sobre conferencias y tutoriales. ¿Hay una manera que me falta para conseguir todos los objetos de conferencias? Soy nuevo en java.
public class Enrolment {
private List<Session> sessions;
public Enrolment() {
this.sessions = new ArrayList<>();
}
public addSession(Session session) {
this.sessions.add(session);
}
}
public class Session {
private int time;
public Session(int time) {
this.time = time;
}
}
public class Lecture extends Session {
private String lecturer;
public Lecture(int time, String lecturer) {
super(time);
this.lecturer = lecturer;
}
}
public class Tutorial extends Session {
private String tutor;
private int tutorScore;
public Tutorial(int time, String tutor, int tutorScore) {
super(time);
this.tutor = tutor;
this.tutorScore = tutorScore;
}
}
public class test {
public static void main(String[] args) {
Enrolment newEnrolment = new Enrolment();
Lecture morningLec = new Lecture(900, "Dr. Mike");
newEnrolment.addSession(morningLec);
Tutorial afternoonTut = new Tutorial(1400, "John Smith", 3);
newEnrolment.addSession(afternoonTut);
Lecture middayLec = new Lecture(1200, "Mr. Micheals");
newEnrolment.addSession(middayLec);
Tutorial NightTut = new Tutorial(1900, "Harry Pauls", 4);
newEnrolment.addSession(NightTut);
}
}
Transmitir los sessions
lista y utilizar instanceof
para filtrar los Lectures
objetos de tipo
List<Lecture> l = sessions.stream()
.filter(Lecture.class::isInstance)
.map(Lecture.class::cast)
.collect(Collectors.toList());
Mediante el uso de for
uso de bucle dos listas diferentes para cada tipo de
List<Lecture> l = new ArrayList<>();
List<Tutorial> t = new ArrayList<>();
for (Session s : sessions) {
if (s instanceof Lecture) {
l.add((Lecture) s);
}
else if(s instanceof Tutorial) {
t.add((Tutorial) s);
}
}