Java egyperces – Objektumok válogatásának megoldása

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" );
    }
  }
}

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

*

Ez az oldal az Akismet szolgáltatást használja a spam csökkentésére. Ismerje meg a hozzászólás adatainak feldolgozását .