Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    13

    Array di oggetti contenitori

    ragazzi sto impazzendo da ore su questa cosa, sicuramente è una cavolfiorata

    "Si deve progettare una classe BufferQuadrato. Un BufferQuadrato è costituito da un array BUF di N buffer, ciascuno dei quali può contenere N elementi di tipo T. Ogni BUF[i] si comporta singolamermente come un buffer circolare. [...]"

    ora ho creato una classe Buffer estendendo linkedlist di java che ha i metodi che mi servono
    codice:
    import java.util.LinkedList;
    
    
    public class Buffer<T> extends LinkedList<T>{
    	private static final long serialVersionUID = 1L;
    	
    	final int dim = 5;
    	
    	public synchronized boolean HPUT(T E){
    		while(size() == dim)
    			try{this.wait();}
    			catch(InterruptedException e){}
    			
    		notifyAll();
    		
    		return super.add(E);
    	}
    	
    	public synchronized T HGET(){
    		while(isEmpty())
    			try{this.wait();}
    		    catch(InterruptedException e){}
    		
    		notifyAll();
    		
    		return super.remove();
    	}
    	
    	public synchronized boolean VPUT(int j, T E){
    		while(size() == dim)
    			try{this.wait();}
    			catch(InterruptedException e){}
    		
    		notifyAll();
    		
    		super.add(j, E);
    		return true;
    	}
    	
    	public synchronized T VGET(int j){
    		while(isEmpty())
    			try{this.wait();}
    		    catch(InterruptedException e){}
    		
    		notifyAll();
    		
    		return super.remove(j);
    	}
    }

    ora devo creare la classe BufferQuadrato, che come dice il testo è un array BUF di N buffer, quindi un array di Buffer?

    Mettiamo caso che voglio provare questo BufferQuadrato con degli int, provo a creare il buffer quadrato così:
    codice:
    ArrayList<Buffer<String>> buf = new ArrayList<Buffer<String>>(5);
    eclipse me lo segnala corretto, ma appena provo a scrivere
    codice:
    for(int i=0;i<5;i++){buf[i] = new Buffer<String>();}
    mi da una serie infinita di errori:
    • Syntax error on token ";", { expected after this - alla linea ArrayList<Buffer<String>> buf
    • The type of the expression must be an array type but it resolved to ArrayList<Buffer<String>> - alla linea del for
    • Syntax error, insert "}" to complete ClassBody


    ho provato in altre decine di modi ma non riesco proprio, penso che sto impazzendo

    riuscite a capirci qualcosa?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    13
    si vede proprio che ieri ero stanco


    ho risolto così

    codice:
    public class BufferQuadrato<T> {
    	Vector<Buffer<T>> BUF;
    	
    	public BufferQuadrato(){
    		BUF = new Vector<Buffer<T>>();
    		BUF.setSize(5);
    
    		for(int i=0;i<BUF.size();i++){
    			BUF.add(i, new Buffer<T>());
    			
    		}
    	}
    ho un solo dubbio, i metodi di Buffer<T> sono sinchronized, non c'è bisogno di mettere synchronized anche i metodi di BufferQuadrato vero?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.