diff --git a/1ano/2semestre/poo/src/aula06/Vector.java b/1ano/2semestre/poo/src/aula06/Vector.java new file mode 100644 index 0000000..7e151dd --- /dev/null +++ b/1ano/2semestre/poo/src/aula06/Vector.java @@ -0,0 +1,95 @@ +package aula06; + +public class Vector { + private int[] vector; + + // Constructors and main getter + public Vector() { + this.vector = new int[0]; + } + public Vector(int size) { + this.vector = new int[size]; + } + public Vector(int[] vector) { + this.vector = vector; + } + public int[] getVector() { + return vector; + } + + // Getters + public int size() { + return this.vector.length; + } + public boolean contains(int value) { + for (int n : this.vector) + if (n == value) + return true; + return false; + } + public int count(int value) { + int count = 0; + for (int n : this.vector) + if (n == value) + count++; + return count; + } + + // Method to change values + public void insert(int value) { + if (this.contains(value)) return; + int[] aux = new int[this.size()+1]; + System.arraycopy(this.vector, 0, aux, 0, this.size()); + aux[this.size()] = value; + this.vector = aux; + } + public void remove(int value) { + int[] aux = new int[this.size()-this.count(value)]; + int i = 0; + for (int n : this.vector) { + if (n == value) + continue; + aux[i] = n; + i++; + } + this.vector = aux; + } + public void empty() { + this.vector = new int[0]; + } + + // Interact with other vectors + public Vector add(Vector secondVector) { + Vector result = new Vector(); + for (int n : this.vector) + if (!result.contains(n)) + result.insert(n); + for (int n : secondVector.vector) + if (!result.contains(n)) + result.insert(n); + return result; + } + public Vector subtract(Vector secondVector) { + Vector result = new Vector(); + for (int n : this.vector) + if (!result.contains(n) && !secondVector.contains(n)) + result.insert(n); + return result; + } + public Vector intersect(Vector secondVector) { + Vector result = new Vector(); + for (int n : this.vector) + if (!result.contains(n) && secondVector.contains(n)) + result.insert(n); + return result; + } + + // ToString + @Override + public String toString() { + StringBuilder result = new StringBuilder(); + for (int n : this.vector) + result.append(String.format("%d ", n)); + return this.size() > 0 ? result.substring(0, result.length()-1) : result.toString(); + } +} diff --git a/1ano/2semestre/poo/src/aula06/VectorTest.java b/1ano/2semestre/poo/src/aula06/VectorTest.java new file mode 100644 index 0000000..1259028 --- /dev/null +++ b/1ano/2semestre/poo/src/aula06/VectorTest.java @@ -0,0 +1,31 @@ +package aula06; + + +public class VectorTest { + public static void main(String[] args) { + Vector c1 = new Vector(); + c1.insert(4); c1.insert(7); c1.insert(6); c1.insert(5); + + Vector c2 = new Vector(); + int[] test = { 7, 3, 2, 5, 4, 6, 7}; + for (int el : test) c2.insert(el); + c2.remove(3); c2.remove(5); c2.remove(6); + + System.out.println(c1); + System.out.println(c2); + + System.out.println("Número de elementos em c1: " + c1.size()); + System.out.println("Número de elementos em c2: " + c2.size()); + + System.out.println("c1 contém 6?: " + ((c1.contains(6) ? "sim" : "não"))); + System.out.println("c2 contém 6?: " + ((c2.contains(6) ? "sim" : "não"))); + + System.out.println("União:" + c1.add(c2)); + System.out.println("Interseção:" + c1.intersect(c2)); + System.out.println("Diferença:" + c1.subtract(c2)); + + c1.empty(); + System.out.println("c1:" + c1); + + } +}