Abbara Rachid L3cfa
TP7 public class MySet implements Iterable<Integer> {
private LinkedList<Integer> liste;
private Iterator<Integer> iterator;
private int nbElement;
public MySet() {
this.liste = new LinkedList<Integer>();
this.nbElement = 0;
this.iterator = this.liste.iterator();
}
public void add(int el) {
if (!this.liste.contains(el)) {
this.liste.add(el);
this.nbElement++;
}
}
public void del(int el) {
this.liste.remove(el);
if (this.nbElement > 0) {
this.nbElement--;
}
}
public boolean contains(int el) {
return this.liste.contains(el);
}
public String toString() {
LinkedList<Integer> listSorted = sortList(this.liste);
String res = "";
for (int el : listSorted) {
if (this.nbElement == 1 || el == listSorted.getLast()) {
res += el;
break;
}
res += el + "-";
}
return res;
}
private LinkedList<Integer> sortList(LinkedList<Integer> liste) {
LinkedList<Integer> res = (LinkedList<Integer>)
this.liste.clone();
Comparator<Integer> c = new Comparator<Integer>() {
@Override
public int compare(Integer e1, Integer e2) {
return e1 - e2;
}
};
Collections.sort(res, c);
Abbara Rachid L3cfa
return res;
}
@Override
public Iterator<Integer> iterator() {
return this.iterator;
}
public void setIteratorOrder(boolean ascending) {
if (ascending) {
this.iterator = this.liste.iterator();
} else {
this.iterator = this.liste.descendingIterator();
}
}
public class TestMySet {
@Test
public void contains() {
MySet set = new MySet();
assertEquals(set.contains(0), false);
set.add(2);
set.add(1);
set.add(3);
set.add(0);
assertEquals(set.contains(1), true);
assertEquals(set.contains(0), true);
assertEquals(set.contains(5), false);
}
@Test
public void add() {
TabSet set = new TabSet();
assertEquals(set.toString(), "");
set.add(3);
set.add(5);
set.add(5);
assertEquals(set.toString(), "3-5");
}
@Test
public void del() {
TabSet set = new TabSet();
set.add(4);
set.del(4);
assertEquals(set.toString(), "");
set.add(6);
assertEquals(set.toString(), "6");
}
}
public class TabSet {
private int tab[];
private int nbElement;
Abbara Rachid L3cfa
public TabSet() {
this.nbElement = 0;
this.tab = new int[5];
}
public void add(int el) {
if (!this.contains(el)) {
if (this.nbElement == this.tab.length) {
this.tab = Arrays.copyOf(this.tab, (this.tab.length
/ 2));
}
this.tab[this.nbElement] = el;
this.nbElement++;
}
}
public void del(int el) {
int tabSorted[] = this.tab.clone();
Arrays.sort(tabSorted);
int indexOfValue = Arrays.binarySearch(tabSorted, el);
if (indexOfValue > -1) {
int[] newTab = copySansElement(tabSorted, indexOfValue);
this.nbElement--;
this.tab = newTab;
}
}
/*
* CopySansElement
*
* @param un tableau d'entier
*
* @param l'index de l'element dans le tableau
*
* @return un tableau d'entier sans l'element indexé en parametre
*/
private int[] copySansElement(int[] tabSorted, int indexOfValue) {
int[] newTab = new int[this.tab.length];
int j = 0;
if (indexOfValue < 0) {
return newTab;
}
for (int i = (newTab.length - this.nbElement); i <
newTab.length; i++) {
if (i == indexOfValue) {
continue;
}
newTab[j] = tabSorted[i];
j++;
}
return newTab;
}
public boolean contains(int el) {
int[] newTab = this.tab.clone();
Arrays.sort(newTab);
int[] newTabLimited = new int[this.nbElement];
Abbara Rachid L3cfa
for (int i = 0; i < this.nbElement; i++) {
newTabLimited[i] = newTab[this.tab.length -
this.nbElement + i];
}
int indexofValue = Arrays.binarySearch(newTabLimited, el);
if (indexofValue < 0) {
return false;
}
return true;
}
public String toString() {
String res = "";
int[] newTab = this.tab.clone();
Arrays.sort(newTab);
for (int i = (newTab.length - this.nbElement); i <
newTab.length; i++) {
if (newTab[i] == newTab[newTab.length - 1]) {
res += newTab[i];
break;
}
res += newTab[i] + "-";
}
return res;
}
public class TabSetTest {
@Test
public void contains() {
TabSet t = new TabSet();
assertEquals(t.contains(0), false);
t.add(2);
t.add(1);
t.add(3);
t.add(0);
assertEquals(t.contains(1), true);
assertEquals(t.contains(0), true);
assertEquals(t.contains(5), false);
}
@Test
public void add() {
TabSet t = new TabSet();
assertEquals(t.toString(), "");
t.add(3);
t.add(5);
t.add(5);
assertEquals(t.toString(), "3-5");
}
@Test
public void del() {
TabSet t = new TabSet();
t.add(4);
t.del(4);
assertEquals(t.toString(), "");
t.add(6);
assertEquals(t.toString(), "6");
}
Abbara Rachid L3cfa
}