Salve a tutti...la domanda è molto semplice; ho creato un metodo che riceve in ingresso un insieme di Integer e restituisce tutti i possibili sottoinsiemi...mi succede pero una cosa che non mi era mai capitata:
se dopo aver chiamato il metodo sottoinsiemi provo a stampare l'oggetto che gli ho passato a questo metodo, l'oggetto risulta vuoto. Detto in altro parole: nel main richiamo il metodo sottoinsiemi passandogli "set2"....se poi provo a stampare set2 mi restituisce l'insieme vuoto....mentre io vorrei che l'insieme set2 rimanesse intatto...dove sbaglio??? quale accorgimento potrei usare...?? grazie in anticipo...
codice:private static Set<Set<Integer>> sottoinsiemi(Set<Integer> s) { if(s.isEmpty()){ Set<Set<Integer>> res = new HashSet<Set<Integer>>(); res.add(s); return res; } Integer e = s.iterator().next(); s.remove(e); Set<Set<Integer>> res = sottoinsiemi(s); Set<Set<Integer>> newSets = new HashSet<Set<Integer>>(); for (Iterator<Set<Integer>> iterator = res.iterator(); iterator.hasNext();) { Set<Integer> set = iterator.next(); Set<Integer> newSet = new HashSet<Integer>(); newSet.addAll(set); newSet.add(e); newSets.add(newSet); } res.addAll(newSets); return res; } main: Set<Integer> set2 = new HashSet<Integer>(); set2.add(1); set2.add(2); set2.add(3); Set<Set<Integer>> subsets = sottoinsiemi(set2); System.out.println("iniziale : "+set2); // vuoto ???????????????????????????????'

Rispondi quotando