É possível declara um vetor e definir o tipo dele em um método, ou converter o tipo dele ou criar um método que retorna mais de um tipo de dado em Java?
Eu estou fazendo um programa para comparar o desempenho de algoritmos de ordenação, esses algoritmos são genéricos e aceitam os tipos da classe Wrapper.
No programa é possível definir o tamanho e o tipo do vetor a ser ordenado, porem estou com problemas para passar o vetor gerado para os métodos de ordenação, para gerar o vetor um método recebe o tipo e o tamanho, analisa o tipo e gera o vetor em um Switch case, porem só esta dando certo fazendo chamadas para cada ordenador dentro de cada opção desse Switch case, assim deixando o método poluído e repetindo código.
public void calculateTime(String dataType, int size) {
switch (dataType) {
case "Character": {
Character[] baseVector = VectorFactory.characterVectorFactory(size);
Character[] vector = baseVector;
startTime = System.nanoTime();
BubbleSort.sort(vector);
finalTime = System.nanoTime();
bubbleSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
CycleSort.sort(vector);
finalTime = System.nanoTime();
cycleSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
HeapSort.sort(vector);
finalTime = System.nanoTime();
heapSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
InsertionSort.sort(vector);
finalTime = System.nanoTime();
insertionSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
MergeSort.sort(vector);
finalTime = System.nanoTime();
mergeSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
QuickSort.sort(vector);
finalTime = System.nanoTime();
quickSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
SelectionSort.sort(vector);
finalTime = System.nanoTime();
selectionSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
ShellSort.sort(vector);
finalTime = System.nanoTime();
shellSortTime = finalTime - startTime;
break;
}
case "Double":{
Double[] baseVector = VectorFactory.doubleVectorFactory(size);
Double[] vector = baseVector;
startTime = System.nanoTime();
BubbleSort.sort(vector);
finalTime = System.nanoTime();
bubbleSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
CycleSort.sort(vector);
finalTime = System.nanoTime();
cycleSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
HeapSort.sort(vector);
finalTime = System.nanoTime();
heapSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
InsertionSort.sort(vector);
finalTime = System.nanoTime();
insertionSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
MergeSort.sort(vector);
finalTime = System.nanoTime();
mergeSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
QuickSort.sort(vector);
finalTime = System.nanoTime();
quickSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
SelectionSort.sort(vector);
finalTime = System.nanoTime();
selectionSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
ShellSort.sort(vector);
finalTime = System.nanoTime();
shellSortTime = finalTime - startTime;
break;
}
case "Integer":{
Integer[] baseVector = VectorFactory.integerVectorFactory(size);
Integer[] vector = baseVector;
startTime = System.nanoTime();
BubbleSort.sort(vector);
finalTime = System.nanoTime();
bubbleSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
CycleSort.sort(vector);
finalTime = System.nanoTime();
cycleSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
HeapSort.sort(vector);
finalTime = System.nanoTime();
heapSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
InsertionSort.sort(vector);
finalTime = System.nanoTime();
insertionSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
MergeSort.sort(vector);
finalTime = System.nanoTime();
mergeSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
QuickSort.sort(vector);
finalTime = System.nanoTime();
quickSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
SelectionSort.sort(vector);
finalTime = System.nanoTime();
selectionSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
ShellSort.sort(vector);
finalTime = System.nanoTime();
shellSortTime = finalTime - startTime;
break;
}
case "String":{
String[] baseVector = VectorFactory.stringVectorFactory(size);
String[] vector = baseVector;
startTime = System.nanoTime();
BubbleSort.sort(vector);
finalTime = System.nanoTime();
bubbleSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
CycleSort.sort(vector);
finalTime = System.nanoTime();
cycleSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
HeapSort.sort(vector);
finalTime = System.nanoTime();
heapSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
InsertionSort.sort(vector);
finalTime = System.nanoTime();
insertionSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
MergeSort.sort(vector);
finalTime = System.nanoTime();
mergeSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
QuickSort.sort(vector);
finalTime = System.nanoTime();
quickSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
SelectionSort.sort(vector);
finalTime = System.nanoTime();
selectionSortTime = finalTime - startTime;
vector = baseVector;
startTime = System.nanoTime();
ShellSort.sort(vector);
finalTime = System.nanoTime();
shellSortTime = finalTime - startTime;
break;
}
}
}