Originariamente inviato da Mrmorrison
Allora Alex ti riformulo la domanda in un altra maniera....
Come avresti risolto tu questo problemino?!
Una cosa del genere:
codice:
public class Set
{
private int[] numbers;
private int firstFreeIndex;
public Set()
{
numbers = new int[10]; // TODO parametrizzare questo valore
}
public boolean isMember(int element)
{
/*
* non serve scorrere tutto l'array ma solo fino a dove e' stato
* riempito: gli elementi in posizione >= firstFreeIndex saranno 0,
* valore di default degli interi (o null in caso di oggetti)
*/
for (int i = 0; i < firstFreeIndex; i++)
{
if (numbers[i] == element)
{
return true;
}
}
return false;
}
public void addMember(int element)
{
if (firstFreeIndex == numbers.length)
{
// rialloca l'array
int[] old = new int[numbers.length];
System.arraycopy(numbers, 0, old, 0, numbers.length);
numbers = new int[numbers.length + 100]; // TODO parametrizzare
System.arraycopy(old, 0, numbers, 0, old.length);
}
if (!isMember(element))
{
numbers[firstFreeIndex++] = element;
}
}
public int get(int index)
{
// TODO gestire caso index < 0
// TODO gestire caso index > numbers.length
// TODO gestire caso index >= firstFreeIndex
return numbers[index];
}
public void print()
{
// TODO ottimizzare usando StringBuilder
String s = "[";
for (int i = 0; i < firstFreeIndex; i++)
{
s += numbers[i];
if (i != firstFreeIndex - 1)
{
s += ", ";
}
}
s += "]";
System.out.println(s);
}
}
public class Main
{
public static void main(String[] args)
{
Set set = new Set();
set.addMember(10);
set.addMember(3);
set.addMember(4);
set.addMember(1);
set.addMember(3);
set.addMember(15);
set.addMember(4);
set.addMember(100);
set.print();
}
}