Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: Java: Geneerinen tyyppi

Edgre [05.11.2007 13:27:49]

#

Geneerisen tyypin käyttö javassa. (jdk 1.5+)

/*
 * 		Toteutetaan Jono-tietorakenne käyttämällä hyväksi javan geneeriset tyypit
 *
 *
 * 		Jono on järjestettyjen alkioiden kokoelma, jossa lisäykset tapahtuvat aina
 * 		loppuun ja jossa alkio voidaan ottaa vain listan alusta.
 *
 * 		Jonon pitäisi toteutaa seuraavat operaatiot:
 * 				enqueue		-   Vie alkion jonon loppuun
 * 				dequeue		-	Ottaa alkion jonon alusta
 * 				is_empty	-	Onko jono tyhjä
 */

class Queue<T>
{
	private static final int MAX_QUEUE = 100;
	private T[] obj;
	private int first = 50;
	private int last = 50;
	private int number_of_obj = 0;

	public Queue()		{ obj = (T[]) new Object[MAX_QUEUE]; }

	// Viedään alkio jonon lopuun
	public void enqueue( T o )
	{
		obj[last++] = o;
		++number_of_obj;

		// varmistetaan ettei mennyt taulukon ulkopuolelle
		if( last >= MAX_QUEUE )
			last = 0;
	}

	// Otetaan alkio jonon alusta
	public T dequeue()
	{
		T o = obj[first++];
		--number_of_obj;

		// varmistetaan ettei mennyt taulukon ulkopuolelle
		if( first >= MAX_QUEUE )
		{
			first = 0;
		}

		return o;
	}

	// Onko jono tyhjä
	public boolean is_empty()
	{
		return (number_of_obj == 0);
	}
}

public class QueueDemo
{
	public static void main( String[] args )
	{
		Queue<String> countrys = new Queue<String>(); // Stringin tilalla voisi olla joku
													//	muu tyyppi, vaikapa Float

		countrys.enqueue( "Finland" );
		countrys.enqueue( "Canada" );
		countrys.enqueue( "France" );

		// Tulostetaan nyt jonon sisältö
		for( int i=1; !countrys.is_empty(); i++ )
			System.out.printf( "%d: %s%n", i, countrys.dequeue() );
	}
}

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta