Tenho 8 Strings
String a="a" ,b="b" ,c="a" ,d="x" ,e="d" ,f="f" ,g="h" ,h="i";
como eu faço para verificar em todas estas Strings ao mesmo tempo se tem alguma igual a outra?
Tenho 8 Strings
String a="a" ,b="b" ,c="a" ,d="x" ,e="d" ,f="f" ,g="h" ,h="i";
como eu faço para verificar em todas estas Strings ao mesmo tempo se tem alguma igual a outra?
Terá no mínimo que fazer um looping
cria um vetor de String e compara dentro do looping
Olha isso:
[code]public class Main {
public static void main(String[] args) {
List<String> list = Arrays.asList(new String[] { "a", "b", "c", "a", "b", "c", "d" });
int qa = Collections.frequency(list, "a");
int qb = Collections.frequency(list, "b");
int qc = Collections.frequency(list, "c");
int qd = Collections.frequency(list, "d");
int qe = Collections.frequency(list, "e");
System.out.println("A: " + qa);
System.out.println("B: " + qb);
System.out.println("C: " + qc);
System.out.println("D: " + qd);
System.out.println("E: " + qe);
}
}[/code]
Boa tarde Lemvb.
Voce consegue fazer isto bem simples, fazendo um vetor de Strings com dois loops "for" aninhados, assim:
.....
// Declarando o vetor de Strings;
String[] str = new String[8];
// Inserindo os valores;
str[0] = "a";
str[1] = "b";
str[2] = "a";
str[3] = "x";
str[4] = "d";
str[5] = "f";
str[6] = "h";
str[7] = "i";
// Conferindo com os dois loops aninhados;
for (int index1 = 0; index1 < 8; index1++){
for (int index2 = 0; index2 < 8; index2++){
// Quando os índices forem iguais então pula para o próximo;
if (index1 == index2){
continue;
}
if (str[index1].equals(str[index2])){
System.out.println("vetor nº "+index1+" é igual ào vetor nº "+index2);
}
}
}
Eu tava pensando em fazer uma função pra verificar todas ao mesmo tempo.
Eu estou criando uma aplicação que gera muito processamento e esta demorando muito pra retornar os resultados.
As verificações que eu passei aqui são só como exemplo.
Minha aplicação real são 8 vetores de String que variam de tamanho entre 372 e 4368 posições destes vetores.
cada vetor deste possui 20 caracteres e eu tenho que comparar de 2 em 2 caracteres.
Se eu for criar um loop vai pesar muito essa aplicação e se eu for criar as comparações uma por uma vão resultar em 240 condições dentro de 1 if.
Alguem tem alguma outra ideia para eu fazer essa verificação entre essas 8 Strings de forma rápida que não gere muito processamento?
Olá sou eu de novo.
Bom, neste caso, voce pode utilizar ainda, o método indexOf(String str) da Classe String, onde poderá até colocar toda a string em uma única variável, assim:
String str = "abaxdfhi";
// Pesquisando a string "aba"
if (str.indexOf("aba") >= 0) {
System.out.println("Encontrada a palavra aba");
}
O método indexOf(…) retorna o índice da primeira ocorrência da palavra "aba" que está contida na variável "str", se este indíce for igual ou maior que zero, então é porque está contido.
Não sei se é este o caso que te ajuda.
Vc precisa descobrir se existem itens repetidos ou vc precisa identificar os itens repetidos?
Se for apenas para descobrir se existem itens repetidos vc pode usar um Set.
Ex.:
Set<String> strings = new HashSet<String>();
strings.add("a");
strings.add("b");
strings.add("c");
strings.add("d");
strings.add("e");
if(strings.size() == <numero de strings adicionadas no set>)
{
sysout("Nao existem strings repetidas");
}
else
{
sysout("Existem strings repetidas");
}
Isso resolve se o seu caso for o que eu citei acima.
flws
Valeu era isso mesmo que eu queria vou adaptar pro meu código aqui.
Só mais uma duvida.
Como eu faço pra remover o ultimo item adicionado na String de HashSet?
se não me engano você teria que guardar o valor em algum lugar para remover, porque no set você não tem como saber quem é o primeiro e o último, só sabe que todos os dados estão la…
se você ainda tiver o valor da última string faça algo parecido com isso:
setDeStrings.remove(ultimaString);
Boa noite a todos.
[quote=lemvb]Só mais uma duvida.
Como eu faço pra remover o ultimo item adicionado na String de HashSet?[/quote]
Esse é o problema do HashSet. Se eu fosse você utilizaria uma objeto Collection, List ou ArrayList, o melhor seria List, assim:
....
List<String> lista = new ArrayList<String>();
// Para adicionar;
lista.add("a");
.......
// Para remover;
lista.remove("a");
// Verificando se a String "a" está contida na lista.
if (lista.contains("a")) System.out.println("A String a está contida");
// Dá até pra criar um método na hora de adicionar, pra evitar duplicidade
public Boolean contemString(String str){
if (lista.contains(str)){
return true;
} else {
return false;
}
}
// E na hora de inserir;
if (contemString("a"){
System.out.println("String 'a' já está inserida");
} else {
lista.add("a");
}