Qui le cose cambiano un pochino (non avevo capito granché prima).
Allora, conviene usare una struttura un po' più complessa, in particolare, questa:
codice:
HashMap<Integer, ArrayList<Coppia>>
Ovvero una mappa che faccia corrispondere a ciascun intero (il tuo "c"), una lista di coppie: per lo più avrai liste da un elemento (una sola coppia), ma potresti avere liste con più elementi (più coppie).
Il tuo "c" sarà un intero (un oggetto Integer) che funge da chiave per la mappa.
Il lavoro andrà valutato con attenzione: al momento in cui generi questo "c" dovrai verificare se esiste una mappatura per tale "c". Se esiste, ottieni l'ArrayList di coppie corrispondente e aggiungi la nuova coppia. Se non esiste, crea un ArrayList, aggiungici la coppia appena trovata e crea la mappatura:
codice:
HashMap<Integer, ArrayList<Coppia>> mappa = new HashMap<Integer, ArrayList<Coppia>>();
...
int c = ... // Ottengo "c" con l'algoritmo che conosci tu
// Verifico se c'è già una mappatura
if( mappa.containsKey(c) ) {
// C'è già una mappatura... ottengo l'ArrayList e aggiungo la nuova coppia
ArrayList<Coppia> lista = mappa.get( c );
lista.add( new Coppia(x, y) );
} else {
// Non c'è nessuna mappatura: la aggiungo
ArrayList<Coppia> lista = new ArrayList<Coppia>();
lista.add( new Coppia(x, y) );
mappa.put(c, lista);
}
Ciao.