Csak akkor olvass tovább, ha az Objektumok válogatása feladatot megoldottad, vagy nem sikerült megoldani.
Az alap feladatot a fenti linken megtalálod.
/**
*
* @author http://webotlet.hu
*/
package webotlet_objektumokvalogatasa;
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.TreeMap;
import java.util.Map;
public class Webotlet_ObjektumokValogatasa
{
public static void main(String[] args)
{
RandomAccessFile raf;
String sor;
// a beolvasando novenyek adatai
ArrayList<Noveny> novenyek = new ArrayList<>();
// a gyujtendo reszek alapjan szetvalogatott novenyek adatai
TreeMap<String,ArrayList<Noveny>> reszek = new TreeMap<>();
try
{
// adatok beolvasasa es tarolasa
raf = new RandomAccessFile("noveny.txt", "r");
for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
{
// a noveny objektumok tarolasa
novenyek.add( new Noveny( sor.split(";") ));
}
// vegigmegyunk a novenyeken
for( Noveny n : novenyek)
{
// ha nincs meg ilyen resz, amiert novenyt gyujtenek, akkor
// letrehozunk egy ilyen kulcsot egy listaval, ahova majd
// az oda tartozo novenyek kerulnek
if( !reszek.containsKey( n.getMiert() ) )
{
reszek.put( n.getMiert(), new ArrayList<Noveny>() );
}
// hozzaadjuk a novenyt az adott listahoz
reszek.get( n.getMiert() ).add(n);
}
// ide pakolom ossze a kiirando szoveget
StringBuilder sb = new StringBuilder();
// vegigmegyek a Map elemein
for( Map.Entry<String,ArrayList<Noveny>> elem : reszek.entrySet() )
{
// eloszor a elem neve jon (a gyujtendo resz)
sb.append(elem.getKey()+":\n");
// majd vegigmegyunk az adott reszhez tartozo novenyeken
for( Noveny n : elem.getValue() )
{
// osszepakoljuk a novenyek konkret adatait (mindig pontosvesszo a vegen!)
sb.append(" "+n.getNev()+", "+n.getKezd()+", "+n.getVeg()+";\n");
}
// ha egy adott csoporttal vegeztunk, az utolso elem utani pontosvesszot
// toroljuk, ami mindig a StringBuilder utolso elotti karaktere
sb.deleteCharAt( sb.length()-2 );
}
System.out.println( sb );
}
catch( IOException e )
{
System.err.println( "HIBA" );
}
}
}
