Tablica składająca się z ArrayBlockingQueue - pytanie.

0

Witam,
szukałem w googlarce i nie znalazłem nic co mogłoby mi pomoc. Więc zapytam tutaj czy jest możliwe zrobienie tablicy składającej się z ArrayBlockingQueue??
Mam taki kodzik:

public class CPN {
	
	public int ilosc_dystrybutorow;
	int pojemnosc_kolejki=3;
	public boolean [] dysrtybutor;
	Samochod auto;
	public BlockingQueue<Integer> [] kolejka ;
	
	
	
	public CPN (int ilosc_dystrybutorow)
	{
		this.ilosc_dystrybutorow=ilosc_dystrybutorow;
	        this.kolejka= new ArrayBlockingQueue<Integer>(3);
		this.dysrtybutor = new boolean [ilosc_dystrybutorow];
		for(int i=0; i<this.dysrtybutor.length;i++)
		{
			this.dysrtybutor[i]=true;
			kolejka[i]= new ArrayBlockingQueue<Integer>(3);
		}
	} 

Co mnie zastanawia że jak zrobię tak:

BlockingQueue<Integer> kolejka = new ArrayBlockingQueue<Integer>(pojemnosc); 

to jest cacy a jak dodam nawias kwadratowy to się burzy :-(

BlockingQueue<Integer> kolejka []= new ArrayBlockingQueue<Integer>(pojemnosc); 
0

Cały problem w tym, że próbujesz utworzyć tablicę obiektów. Pół biedy, gdyby miały bezargumentowe konstruktory. Ogólnie zasada jest taka, że gdy potrzebujesz takową tablicę to musisz skorzystać z jakiejś kolekcji. Poniżej masz ten sam kod, ale poprawiony.

public class CPN {
 
        public int ilosc_dystrybutorow;
        int pojemnosc_kolejki=3;
        public boolean [] dysrtybutor;
        Samochod auto;
        public ArrayList<BlockingQueue<Integer>> kolejka;
 
        public CPN (int ilosc_dystrybutorow)
        {
                this.kolejka = new ArrayList<BlockingQueue<Integer>>();
                this.ilosc_dystrybutorow=ilosc_dystrybutorow;
                this.dysrtybutor = new boolean [ilosc_dystrybutorow];
                for(int i=0; i<this.dysrtybutor.length;i++)
                {
                        this.dysrtybutor[i]=true;
                        kolejka.add(new ArrayBlockingQueue<Integer>(3));
                }
        }

Opolski Portal Programistyczny
http://programowanie.opole.pl

0

W czym problem?

ArrayBlockingQueue<Integer>[] kolejki = new ArrayBlockingQueue[rozmiarTablicy];

1 użytkowników online, w tym zalogowanych: 0, gości: 1