- Apple iPhone Air - almacsutka
- Milyen hagyományos (nem okos-) telefont vegyek?
- Poco F7 – bajnokesélyes
- Mobilhasználat külföldön
- Nem tud dönteni az iFold a titán és az alumínium között
- Telekom mobilszolgáltatások
- Fotók, videók mobillal
- Samsung Galaxy S25 Edge - a tegnap határán
- Yettel topik
- Xiaomi 15T Pro - a téma nincs lezárva
Hirdetés
(használd a CYBSEC25PH kuponkódot további 20 ezer ft kedvezményért!)
Új hozzászólás Aktív témák
-
Csaby25
őstag
Sziasztok!
A következő metódus csv file-ból olvas ki sorokat és objektummá alakítom (minden sor egy objektum):private static void readData(File inputFile, Class type) {
try {
BufferedReader reader = new BufferedReader(new FileReader(inputFile));
String line;
// Reading first line..
while ((line = reader.readLine()) != null) {
String[] values = line.split(COMMA_DELIMITER);
if (type == Student.class) {
Student student = populateStudent(values);
if (students == null) {
students = new HashMap<Integer, Student>();
}
students.put(student.getStudentId(), student);
}
if (type == Subject.class) {
Mark mark = populateMark(values);
Subject subject = populateSubject(values);
if (subject.getMarks() == null) {
subject.setMarks(new ArrayList<Mark>());
}
students.get(mark.getStudentId()).getSubjects().put(subject.getSubjectId(), subject);
students.get(mark.getStudentId()).getSubjects().get(subject.getSubjectId()).getMarks().add(mark);
}
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Ez szeretném megoldani Stream-el:
private static void readData(Path inputFile, Class type) {
Student student;
Subject subject;
Mark mark;
try {
Stream<String> lines = Files.lines(inputFile);
List<List<String>> values = lines.map(line -> Arrays.asList(line.split(COMMA_DELIMITER))).collect(Collectors.toList());
if (type == Student.class) {
values.forEach(value -> student = populateStudent(value));
if (students == null) {
students = new HashMap<Integer, Student>();
}
students.put(student.getStudentId(), student);
}
if (type == Subject.class) {
values.forEach(value -> mark = populateMark(value));
if (subject.getMarks() == null) {
subject.setMarks(new ArrayList<Mark>());
}
students.get(mark.getStudentId()).getSubjects().put(subject.getSubjectId(), subject);
students.get(mark.getStudentId()).getSubjects().get(subject.getSubjectId()).getMarks().add(mark);
}
//}
} catch (Exception e) {
e.printStackTrace();
}
}
A forEach-ben (
value -> student = populateStudent(value)
) ezt a hibát kapom: ''Local variable student defined in an enclosing scope must be final or effectively final'Tudja valaki, hogy lehet ezt megoldani?
Köszi!
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Új 0km es GARANCIAS acer nitro 15 rtx 4060 ryzen 7
- Új garanciás MSI Alpha ! R9 7945hx 32 ram 17 col 240hz qhd rtx 4070
- Ár értékbajnok! Prémium kategória 4060 ESZMÉLETLEN JÓ ÁRON! GIGABYTE AORUS rtx 4060
- ENNYI PÉNZÉRT ilyen konfigot nem kapsz! Prémium kategória! Gigabyte aorus rtx 4070 i9 14900hx 2k qhd
- Tökéletes E sport gamer! Újszerű HP victus rtx 3050 ryzen 5600h 16gb ram 512 ssd
- Lenovo ThinkPad L16 Gen 1 - 16" WUXGA IPS - Ultra 5 135U - 16GB - 512GB - Win11 - 2,5 év gari
- Apple iPhone 15 Pro 256GB, Kártyafüggetlen, 1 Év Garanciával
- Xiaomi Redmi Pad Pro 256GB, Újszerű, 1 Év Garanciával
- Apple iPhone 13 Mini 128GB, Kártyafüggetlen, 1 Év Garanciával
- Corsair K100 RGB Optix (CH-912A01A-FR)
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest