Boa tarde galera. Tenha essas duas String que são retornadas do base de dados string1 ="01 21 52 12 36 55" E string2 = "26 44 46 49 55 56";
preciso pegar os valores comuns entre as duas. Qual a melher forma para fazer isso? transforma-las em Array e depois percorrer nelas pegando os valores? ou tem uma outra forma mas pratica ou mas bonito.
Uma solução é utilizar a classe StringTokenizer
Ex:
StringTokenizer st = new StringTokenizer(string1, " ");//vai separar a string nos valores desejados, delimitando pelo espaço entre os valores.
String elemento = null;
while (st.hasMoreTokens()) {
elemento = st.nextToken();
}
Aí faz a mesma coisa para a string2 e compara os valores dela com os da string1.
E
entanglement
caiomacedor:
Boa tarde galera. Tenha essas duas String que são retornadas do base de dados string1 ="01 21 52 12 36 55" E string2 = "26 44 46 49 55 56";
preciso pegar os valores comuns entre as duas. Qual a melher forma para fazer isso? transforma-las em Array e depois percorrer nelas pegando os valores? ou tem uma outra forma mas pratica ou mas bonito.
Vamos lá.
importjava.util.*;classValoresComuns{publicstaticvoidmain(String[]args){Strings1="01 21 52 12 13 36 55";Strings2="26 13 44 46 49 55 56";String[]v1=s1.split(" ");String[]v2=s2.split(" ");Set<String>set1=newTreeSet<String>(Arrays.asList(v1));Set<String>set2=newTreeSet<String>(Arrays.asList(v2));set1.retainAll(set2);System.out.println(set1);// Deve imprimir "[13, 55]"// Se você não sabe trabalhar com Set, então vou converter em um Array para você. String[]s3=set1.toArray(newString[0]);for(inti=0;i<s3.length;++i){System.out.println(i+":"+s3[i]);}}}
renamed
Não é a solução mais bonita, mas tmb não é custosa...
Faz um loop e compara elemento por elemento... espaços fazem diferenca? Letras maísuculas/minúsculas? Se não, ai fica fácil... nem precisa transformar em Array...
publicstaticvoidmain(String[]args){Stringa="a b c 1 2 3";Stringb="a b c 1 3 2";intindiceDiferenca=comparaStrings(a,b);if(indiceDiferenca==-1){System.out.println("São iguais");}else{System.out.println("Diferença em "+indiceDiferenca);}a="a b";b="a b";indiceDiferenca=comparaStrings(a,b);if(indiceDiferenca==-1){System.out.println("São iguais");}else{System.out.println("Diferença em "+indiceDiferenca);}}/** * Método que vai comparar duas strings * @param s1 * @param s2 * @return * O índice em que foi encontrada a primeira ocorrência de diferença. * Se as strings forem iguais, retornará -1. */publicstaticintcomparaStrings(Strings1,Strings2){inti=0;/* * Vai um por um passeando pelos dois vetores */while((i<s1.length())&&(i<s2.length())){if(s1.charAt(i)!=s2.charAt(i)){returni;}i++;}/* * Se chegar aqui, ou são iguais ou um é menor que o outro (nesse caso, diferentes) */if(s1.length()==s2.length()){return-1;}/* * Se chegar aqui, um é menor que o outro... "i" conterá o último índice do menor vetor */returni;}
ok?
caiomacedor
Muito obrigado a todos galera, Mas a a forma que as se adequa a minha nescessidade é a forma que o “entanglement” mencionou. Isso porque eu preciso separar os valores comuns. Veja como ficou: