summaryrefslogtreecommitdiff
path: root/graphs/java/mySet/src
diff options
context:
space:
mode:
Diffstat (limited to 'graphs/java/mySet/src')
-rw-r--r--graphs/java/mySet/src/main/java/fr/epita/assistants/myset/GenericSet.java83
-rw-r--r--graphs/java/mySet/src/main/java/fr/epita/assistants/myset/IntegerSet.java83
2 files changed, 166 insertions, 0 deletions
diff --git a/graphs/java/mySet/src/main/java/fr/epita/assistants/myset/GenericSet.java b/graphs/java/mySet/src/main/java/fr/epita/assistants/myset/GenericSet.java
new file mode 100644
index 0000000..590751f
--- /dev/null
+++ b/graphs/java/mySet/src/main/java/fr/epita/assistants/myset/GenericSet.java
@@ -0,0 +1,83 @@
+package fr.epita.assistants.myset;
+
+import java.util.ArrayList;
+
+public class GenericSet<T extends Comparable<T>> {
+ ArrayList<T> base_;
+
+ public GenericSet() {
+ base_ = new ArrayList<>();
+ }
+
+ private static <T extends Comparable<T>> void insertionSort(ArrayList<T> array) {
+ if (array.isEmpty()) {
+ return;
+ }
+ for (int i = 1; i < array.size(); i++) {
+ for (int j = i; j > 0 && array.get(j - 1).compareTo(array.get(j)) > 0; j--) {
+ T tmp = array.get(j);
+ array.set(j, array.get(j - 1));
+ array.set(j - 1, tmp);
+ }
+ }
+ }
+ public void insert(T i) {
+ if (!this.has(i)) {
+ this.base_.add(i);
+ insertionSort(base_);
+ }
+ }
+
+ public void remove(T i) {
+ this.base_.remove(i);
+ }
+
+ public boolean has(T i) {
+ return this.base_.contains(i);
+ }
+
+ public boolean isEmpty() {
+ return this.base_.isEmpty();
+ }
+
+ public T min() {
+ T min = base_.getFirst();
+ for (T t : base_) {
+ if (t.compareTo(min) < 0)
+ min = t;
+ }
+ return min;
+ }
+
+ public T max() {
+ T max = base_.getFirst();
+ for (T t : base_) {
+ if (t.compareTo(max) > 0)
+ max = t;
+ }
+ return max;
+ }
+
+ public int size() {
+ return base_.size();
+ }
+
+ public static <T extends Comparable<T>> GenericSet<T> intersection(GenericSet<T> a, GenericSet<T> b) {
+ GenericSet<T> res = new GenericSet<T>();
+ for (int i = 0; i < a.size(); i++) {
+ if (b.has(a.base_.get(i)))
+ res.insert(a.base_.get(i));
+ }
+ return res;
+ }
+
+ public static <T extends Comparable<T>> GenericSet<T> union(GenericSet<T> a, GenericSet<T> b) {
+ GenericSet<T> res = new GenericSet<>();
+ for (T i : a.base_)
+ res.insert(i);
+ for (T i : b.base_)
+ res.insert(i);
+
+ return res;
+ }
+}
diff --git a/graphs/java/mySet/src/main/java/fr/epita/assistants/myset/IntegerSet.java b/graphs/java/mySet/src/main/java/fr/epita/assistants/myset/IntegerSet.java
new file mode 100644
index 0000000..25dcfdc
--- /dev/null
+++ b/graphs/java/mySet/src/main/java/fr/epita/assistants/myset/IntegerSet.java
@@ -0,0 +1,83 @@
+package fr.epita.assistants.myset;
+
+import java.util.ArrayList;
+
+public class IntegerSet {
+ ArrayList<Integer> base_;
+
+ public IntegerSet() {
+ base_ = new ArrayList<Integer>();
+ }
+
+ private static void insertionSort(ArrayList<Integer> array) {
+ if (array.isEmpty()) {
+ return;
+ }
+ for (int i = 1; i < array.size(); i++) {
+ for (int j = i; j > 0 && array.get(j - 1).compareTo(array.get(j)) > 0; j--) {
+ Integer tmp = array.get(j);
+ array.set(j, array.get(j - 1));
+ array.set(j - 1, tmp);
+ }
+ }
+ }
+ public void insert(Integer i) {
+ if (!this.has(i)) {
+ this.base_.add(i);
+ insertionSort(base_);
+ }
+ }
+
+ public void remove(Integer i) {
+ this.base_.remove(i);
+ }
+
+ public boolean has(Integer i) {
+ return this.base_.contains(i);
+ }
+
+ public boolean isEmpty() {
+ return this.base_.isEmpty();
+ }
+
+ public Integer min() {
+ Integer min = base_.getFirst();
+ for (Integer integer : base_) {
+ if (integer < min)
+ min = integer;
+ }
+ return min;
+ }
+
+ public Integer max() {
+ Integer max = base_.getFirst();
+ for (Integer integer : base_) {
+ if (integer > max)
+ max = integer;
+ }
+ return max;
+ }
+
+ public int size() {
+ return base_.size();
+ }
+
+ public static IntegerSet intersection(IntegerSet a, IntegerSet b) {
+ IntegerSet res = new IntegerSet();
+ for (int i = 0; i < a.size(); i++) {
+ if (b.has(a.base_.get(i)))
+ res.insert(a.base_.get(i));
+ }
+ return res;
+ }
+
+ public static IntegerSet union(IntegerSet a, IntegerSet b) {
+ IntegerSet res = new IntegerSet();
+ for (Integer i : a.base_)
+ res.insert(i);
+ for (Integer i : b.base_)
+ res.insert(i);
+
+ return res;
+ }
+}