União entre dois vetores?

Galera, estou com um problema que não faço ideia de como implementar, dado dois vetores,A e B, preciso imprimir um vetor C contendo a A U B (A união B) ordenado.

Exemplo:

VetorA {1,1,3,4}
VetorB {1,2,2,3,5}
OUTPUT:
VetorC {1,2,3,4,5}

Olá amigo,

1 curtida

Eu não entendi muito bem a sua lógica, mas quebrei um pouco a cabeça e consegui chegar no resultado esperado. Vou postar o código aqui, fico aberto para quaisquer sugestões ou críticas construtivas.

Classe UniaoVetores:

import java.util.Arrays;
import java.util.Random;

public class UniaoVetores {

	private int[] a;
	private int[] b;
	private int[] aux;
	private int[] principal;

	public UniaoVetores(int aSize, int bSize) {
		this.a = new int[aSize];
		this.b = new int[bSize];
		this.aux = new int[aSize + bSize];
	}

	public void setArrayPrincipalSize() {
		int temp = 0;
		int contador = 0;
		for (int i = 0; i < aux.length; i++) {
			if (i == 0) {
				temp = aux[i];
			} else {
				if (temp == aux[i]) {
					contador++;

				} else {
					temp = aux[i];
				}
			}
		}
		geraArrayPrincipal(contador);

	}

	public void geraArrayPrincipal(int n) {
		int temp = 0;
		principal = new int[aux.length - n];
		int ip = 0; // indice da array principal
		for (int i = 0; i < aux.length; i++) {
			if (i == 0) {
				principal[ip] = aux[i];
				temp = aux[i];
				ip++;
			} else {
				if (temp != aux[i]) {
					principal[ip] = aux[i];
					temp = aux[i];
					ip++;
				}
			}
		}

	}

	public void getA() {
		System.out.print("Vetor A: ");
		for (int i = 0; i < a.length; i++) {
			if (i == 0) {
				System.out.printf("{%d, ", a[i]);
			} else {
				if (i == a.length - 1) {
					System.out.printf("%d}", a[i]);
				} else {
					System.out.printf("%d, ", a[i]);
				}
			}
		}
	}

	public void getB() {
		System.out.print("\nVetor B: ");
		for (int i = 0; i < b.length; i++) {
			if (i == 0) {
				System.out.printf("{%d, ", b[i]);
			} else {
				if (i == b.length - 1) {
					System.out.printf("%d}", b[i]);
				} else {
					System.out.printf("%d, ", b[i]);
				}
			}
		}
	}

	public void getPrincipal() {
		System.out.print("\nVetor Principal: ");
		for (int i = 0; i < principal.length; i++) {
			if (i == 0) {
				System.out.printf("{%d, ", principal[i]);
			} else {
				if (i == principal.length - 1) {
					System.out.printf("%d}", principal[i]);
				} else {
					System.out.printf("%d, ", principal[i]);
				}
			}
		}
	}

	public void gerarArraysAux() {

		Random r = new Random();

		for (int i = 0; i < a.length; i++) {
			a[i] = r.nextInt(6);

		}

		for (int i = 0; i < b.length; i++) {
			b[i] = r.nextInt(6);

		}
		System.arraycopy(a, 0, aux, 0, a.length);
		System.arraycopy(b, 0, aux, a.length, b.length);

	}

	public void ordenarArrayAux() {
		Arrays.sort(aux);
	}

}

Classe Teste:

public class TesteUniaoVetores {

public static void main(String[] args) {

  UniaoVetores uv = new UniaoVetores(4, 3);
  uv.gerarArraysAux();
  uv.getA();
  uv.getB();
  uv.ordenarArrayAux();
  uv.setArrayPrincipalSize();
  uv.getPrincipal();

}
}