Pessoal estou sofrendo para fazer isso…
Tenho um Array do tipo int array[] = new int[20];
preciso ordená-lo mas sem repetição dos números…
exemplo:
[5, 2, 3, 5, 7, 2, 1] --> [1, 2, 3, 5, 7]
Alguém pode me dar uma luz!?
Pessoal estou sofrendo para fazer isso…
Tenho um Array do tipo int array[] = new int[20];
preciso ordená-lo mas sem repetição dos números…
exemplo:
[5, 2, 3, 5, 7, 2, 1] --> [1, 2, 3, 5, 7]
Alguém pode me dar uma luz!?
Procure por Collections.sort e pela interface Set. Tem sua resposta 
Até!
Pessoal estou sofrendo para fazer isso…Tenho um Array do tipo int array[] = new int[20];
preciso ordená-lo mas sem repetição dos números…
exemplo:
[5, 2, 3, 5, 7, 2, 1] --> [1, 2, 3, 5, 7]
Alguém pode me dar uma luz!?
Viper, você pode utilizar uma Coleção do tipo Set, qualquer uma.
Os tipos Set não aceitam repetição, se você implementar o hashcode corrretamente.
Pode utilizar tbm um TreeSet, para classificar pela ordem que quiser, utilizando Comparable ou Comparator.
Tem ainda a possibilidade de usar as classes utilitarias, que Collections e Arrays.
Está ai a solução...
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import java.util.Random;
public class Quick
{
private static void ordena(int a[], int p, int u)
{
int i = p, f = u;
int x = (int) (Math.random()*(u-p+1))+p;
int pivô = a[x];
while (i <= f)
{
while (i < u && a[i] < pivô) i++;
while (f > p && a[f] > pivô) f--;
if (i <= f)
{
x = a[f];
a[f--] = a[i];
a[i++] = x;
}
}
if (p < f) ordena(a,p,f);
if (i < u) ordena(a,i,u);
}
public static void main(String args[])
{
Random aleatorio = new Random();
String saida="";
JTextArea texto = new JTextArea(10,10);
JScrollPane exibe = new JScrollPane(texto);
int vet[] = new int [100000];
int i;
for(i=0;i<vet.length;i++)
vet[i]=-0+aleatorio.nextInt(12000);
ordena(vet,0,vet.length-1);
for (i=0;i<vet.length;i++)
saida+=vet[i]+"\n";
texto.setText(saida);
JOptionPane.showMessageDialog(null,exibe,"ORDENAÇÂO COM QUICK SORT",JOptionPane.WARNING_MESSAGE);
}
}
Consegui…
Obrigado a todos pela ajuda…
segue abaixo o código…
Set unicos = new HashSet();
Set repetidos = new HashSet();
for (int i=0; i<array.length; i++)
if (!unicos.add(array[i]))
repetidos.add(array[i]);
unicos.remove(repetidos);
Foi o que eu consegui…
abraço!
import java.util.*;
class TesteSortUniq {
public static void main(String[] args) {
int[] dados = {5, 2, 3, 5, 7, 2, 1};
// Primeiramente vamos criar um SortedSet<Integer> que contém os dados
// originais, sem repetição.
SortedSet<Integer> conjuntoDadosOrdenados = new TreeSet<Integer>();
for (int dado : dados) {
conjuntoDadosOrdenados.add (dado);
}
// Agora vamos pegar os dados e criar um novo array com eles.
int[] dadosOrdenados = new int[conjuntoDadosOrdenados.size()];
int i = 0;
for (Integer dado : conjuntoDadosOrdenados) {
dadosOrdenados[i] = dado;
i++;
}
// Vamos imprimir o array dadosOrdenados.
for (int dado : dadosOrdenados) {
System.out.print (dado + ",");
}
}
}