Olá, tenho uma lista assim:
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
Como faço para printar na tela somente até o primeiro 10 da lista? Existe algum método, função para isto?
Olá, tenho uma lista assim:
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
Como faço para printar na tela somente até o primeiro 10 da lista? Existe algum método, função para isto?
Procure por java.util.Set (no seu caso, use java.util.LinkedHashSet ou java.util.TreeSet). Ele não permite que elementos repetidos sejam adicionados.
/**
* Remove elementos repetidos de uma lista.
* Não guarda a ordem dos registros.
* @param list
* @return
*/
public static <T> List<T> removeRepeatedValues(List<T> list){
List<T> novaLista = new ArrayList<T>(new HashSet<T>(list));
return novaLista;
}
Consegui resolver com este método
Set<String> semRepeticao = new LinkedHashSet<String>();
for (String valor: array) {
semRepeticao.add(valor);
}
Consegui resolver com este método
Set<String> semRepeticao = new LinkedHashSet<String>(); for (String valor: array) { semRepeticao.add(valor); }
Agora como converter este meu Set para uma List ?
Teste:
Set<String> set = new HashSet<>(2);
set.add("1");
set.add("0");
List<String> s = new ArrayList<>(2);
s.addAll(set);
E porque a lista é de String se contém números?
List<Integer> numerosNaoRepetidos = new ArrayList<Integer>(outraColecao);
Teste:Set<String> set = new HashSet<>(2); set.add("1"); set.add("0"); List<String> s = new ArrayList<>(2); s.addAll(set);E porque a lista é de String se contém números?
por que aqui os meus números estão como string (coisas do chefe)
funcionou perfeitamente!
Mas agora como ordeno os números?
lembrando que eles estão em string, como faço isso?
Não precisa seguir nem meu exemplo, vou dar outro: “2”,“3”,“1”. como ordenar minhas strings para 1, 2 e 3?
public static void main(String[] args){
List<String> strings = new ArrayList<String>();
strings.add("3");
strings.add("2");
strings.add("1");
System.out.println(strings);
Collections.sort(strings);
System.out.println(strings);
}
Se você usar um TreeSet em vez de um HashSet os valores serão ordenados na ordem natural.
A classe String já implementa Comparable, então é só ordenar:public static void main(String[] args){ List<String> strings = new ArrayList<String>(); strings.add("3"); strings.add("2"); strings.add("1"); System.out.println(strings); Collections.sort(strings); System.out.println(strings); }
Funcionou, mas vamos supor que eu tenha "1","2".. até "10" embaralhados
com o collections.sort ele irá me retornar assim: 1, 10, 2, 3, 4, 5, 6, 7, 8, 9. O que não é uma ordem correta, tem outra forma de retornar a ordem de 1 a 10?
Fabio, use inteiros, não strings para sua lista. Quanto é 1 + 1?
Para strings, 1 + 1 == 11 (ha ha ha)
Por qual motivo divino não usou o método que postei pra ti ?
faz exatamente tudo o q vc ta tentando com o for…
só que em 2 linhas de código… asudhhuahuasdhud
francamente…
Por qual motivo divino não usou o método que postei pra ti ? faz exatamente tudo o q vc ta tentando com o for... só que em 2 linhas de código... asudhhuahuasdhud francamente...
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
public class calcular {
public static void main(String[] args) {
List<String> lista = new ArrayList<String>();
lista.add("3");
lista.add("2");
lista.add("1");
lista.add("3");
lista.add("2");
lista.add("1");
lista.add("4");
public static List<String> removeRepeatedValues(List<String> lista)
{
List<String> novaLista = new ArrayList<String>(new HashSet<String>(lista));
return novaLista;
}
}
}
Implementei errado?
Tu compilou esse código ?
Eu tenho a leve impressão que tem um método dentro de outro.
Tu compilou esse código ? Eu tenho a leve impressão que tem um método dentro de outro.
agora tá funcionando..
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
public class calcular {
public static void main(String[] args) {
List<String> lista = new ArrayList<String>();
lista.add("3");
lista.add("2");
lista.add("1");
lista.add("3");
lista.add("2");
lista.add("1");
lista.add("4");
calcular a = new calcular();
System.out.println(a.removeRepeatedValues(lista));
}
public List<String> removeRepeatedValues(List<String> lista)
{
List<String> novaLista = new ArrayList<String>(new HashSet<String>(lista));
return novaLista;
}
}
Mas está printando [3, 2, 1, 4]. Ou seja, fora de ordem
Claro, o HashSet vai apenas remover valores repetidos e não ordenar. Para fazer ambos, use TreeSet.
Claro, o HashSet vai apenas remover valores repetidos e não ordenar. Para fazer ambos, use TreeSet.
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
public class calcular {
public static void main(String[] args) {
List<String> lista = new ArrayList<String>();
lista.add("3");
lista.add("2");
lista.add("1");
lista.add("3");
lista.add("2");
lista.add("10");
lista.add("4");
calcular a = new calcular();
System.out.println(a.removeRepeatedValues(lista));
}
public List<String> removeRepeatedValues(List<String> lista) {
List<String> novaLista = new ArrayList<String>(new HashSet<String>(
lista));
Collections.sort(novaLista);
return novaLista;
}
}
A saída: 1, 10, 2, 3, 4. O mais indicado para ordenar de forma correta seria com o TreeSet mesmo né?
Claro, o HashSet vai apenas remover valores repetidos e não ordenar. Para fazer ambos, use TreeSet.import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; public class calcular { public static void main(String[] args) { List<String> lista = new ArrayList<String>(); lista.add("3"); lista.add("2"); lista.add("1"); lista.add("3"); lista.add("2"); lista.add("10"); lista.add("4"); calcular a = new calcular(); System.out.println(a.removeRepeatedValues(lista)); } public List<String> removeRepeatedValues(List<String> lista) { List<String> novaLista = new ArrayList<String>(new HashSet<String>( lista)); Collections.sort(novaLista); return novaLista; } }A saída: 1, 10, 2, 3, 4. O mais indicado para ordenar de forma correta seria com o TreeSet mesmo né?
Assim também funciona, acontece que o Java entende que uma String "10" deve vir antes de um "2", entendeu?
Por isso o entanglement disse para você usar inteiros, que é o correto nesse caso. Ai, ficaria assim, simples:
List<Integer> lista = new ArrayList<>();
lista.add(3);
lista.add(2);
lista.add(1);
lista.add(3);
lista.add(2);
lista.add(10);
lista.add(4);
List<Integer> novaLista = new ArrayList<>(new TreeSet<>(lista));
for (Integer value : novaLista) {
System.out.println(value);
}
Claro, o HashSet vai apenas remover valores repetidos e não ordenar. Para fazer ambos, use TreeSet.import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; public class calcular { public static void main(String[] args) { List<String> lista = new ArrayList<String>(); lista.add("3"); lista.add("2"); lista.add("1"); lista.add("3"); lista.add("2"); lista.add("10"); lista.add("4"); calcular a = new calcular(); System.out.println(a.removeRepeatedValues(lista)); } public List<String> removeRepeatedValues(List<String> lista) { List<String> novaLista = new ArrayList<String>(new HashSet<String>( lista)); Collections.sort(novaLista); return novaLista; } }A saída: 1, 10, 2, 3, 4. O mais indicado para ordenar de forma correta seria com o TreeSet mesmo né?
Assim também funciona, acontece que o Java entende que uma String "10" deve vir antes de um "2", entendeu?
Por isso o entanglement disse para você usar inteiros, que é o correto nesse caso. Ai, ficaria assim, simples:List<Integer> lista = new ArrayList<>(); lista.add(3); lista.add(2); lista.add(1); lista.add(3); lista.add(2); lista.add(10); lista.add(4); List<Integer> novaLista = new ArrayList<>(new TreeSet<>(lista)); for (Integer value : novaLista) { System.out.println(value); }
Mas na minha tarefa tenho que dar um jeito de colocar esse 10 por último rs, ele tem porque tem que ser em string..
[color=darkred] Chefe sádico (?) aIUEHIuaeh kiddin ’ :lol:
sou newbie ainda , mas nesse caso da lista ter que ser String ,
uma conversão final para saída não resolveria?
Desculpe se eu estiver falando bobagem ![/color] :roll:
[color=darkred] Chefe sádico (?) aIUEHIuaeh kiddin ' :lol: sou newbie ainda , mas nesse caso da lista ter que ser String , uma conversão final para saída não resolveria?A minha lista já está em string, olhe:Desculpe se eu estiver falando bobagem ![/color] :roll:
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
public class calcular {
public static void main(String[] args) {
List<String> lista = new ArrayList<String>();
lista.add("10000");
lista.add("20000");
lista.add("30000");
lista.add("40000");
lista.add("50000");
lista.add("60000");
lista.add("70000");
lista.add("80000");
lista.add("90000");
lista.add("100000");
lista.add("10000");
lista.add("20000");
lista.add("30000");
lista.add("40000");
lista.add("50000");
lista.add("60000");
lista.add("70000");
lista.add("80000");
lista.add("90000");
lista.add("100000");
lista.add("10000");
lista.add("20000");
lista.add("30000");
lista.add("40000");
lista.add("50000");
lista.add("60000");
lista.add("70000");
lista.add("80000");
lista.add("90000");
lista.add("100000");
lista.add("10000");
lista.add("20000");
lista.add("30000");
lista.add("40000");
lista.add("50000");
lista.add("60000");
lista.add("70000");
lista.add("80000");
lista.add("90000");
lista.add("100000");
calcular a = new calcular();
System.out.println(a.removeRepeatedValues(lista));
}
public List<String> removeRepeatedValues(List<String> lista) {
List<String> novaLista = new ArrayList<String>(new HashSet<String>(
lista));
Collections.sort(novaLista);
return novaLista;
}
}
Por qual motivo divino não usou o método que postei pra ti ? faz exatamente tudo o q vc ta tentando com o for... só que em 2 linhas de código... asudhhuahuasdhud francamente...import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; public class calcular { public static void main(String[] args) { List<String> lista = new ArrayList<String>(); lista.add("3"); lista.add("2"); lista.add("1"); lista.add("3"); lista.add("2"); lista.add("1"); lista.add("4"); public static List<String> removeRepeatedValues(List<String> lista) { List<String> novaLista = new ArrayList<String>(new HashSet<String>(lista)); return novaLista; } } }Implementei errado?
Coloca List fora do Main.