一个面试问题,请教? 请你使用最高效的方法来实现String[] s1 = {"a","b","c"};String[] s2 = {"b","d","e"};这两个字符串数组中哪些个字符相等,哪些个字符不相等 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 咳嗽咳嗽 elquas的话 s1[1] == s2[0] 但是想用 if(s1[1] == s2[0]) 的话 那么这俩条数组全不相等 因为String 是对象 比如String s = "A";// s = "A"; //这里的S 已经不等于上面的S了。。 内存地址被改变了 s1 change to Listforeach(String s : s2){ if(list.contains(s)){ //equals } else { //not equals }}我觉得还有更简便的方法。 equal是字符串相等,==是只相等! public static void main(String[] args) { String[] s1 = {"a","b","c"}; String[] s2 = {"b","d","e"}; HashSet<String> ss1 = new HashSet<String>(); HashSet<String> diff; HashSet<String> same = new HashSet<String>(); ss1.addAll(Arrays.asList(s1)); diff = (HashSet<String>) ss1.clone(); for (String s:s2){ if (ss1.contains(s)){ same.add(s); diff.remove(s); } else diff.add(s); } System.out.println(diff); System.out.println(same); } public class Test { static String[] s1 = { "a", "b", "c" }; static String[] s2 = { "b", "d", "e" }; public static void method1() { HashSet<String> ss1 = new HashSet<String>(); HashSet<String> same = new HashSet<String>(); for (String s : s2) { if (ss1.contains(s)) { same.add(s); } } System.out.println(same); } public static void method2(){ char[] charS1 = new String(s1[0]+s1[1]+s1[2]).toCharArray(); char[] charS2 = new String(s2[0]+s2[1]+s2[2]).toCharArray(); for(char ch:charS1){ for(char ch2:charS2){ if(ch == ch2){System.out.println(ch2);} } } } public static void method3(){ for(String str:s1){ for(String str2:s2){ if(str.equals(str2)){ System.out.println(str); } } } } public static void method4(){ for(String str:s1){ for(String str2:s2){ if(str.hashCode()==str2.hashCode()){ System.out.println(str); } } } } public static void main(String[] args) { long start = System.nanoTime(); //method1(); //method2(); //method3(); //method4(); System.out.println("Time:"+(System.nanoTime()-start)); }}一个个的方法去掉注释测试,一次测试一个,不要把注释都去掉,结果自己看,其实方法多的是 swing程序访问arcGisServer 在java中怎么用Socket在不同的局域网之间通信? java连接sql 2005问题 在线等。。。。 java 编码问题 Iterator中的设计模式 如何引用别的工程中的package?谢谢 如何修改showinputdialog消息框字体? 一个很菜的问题,如何取得一个四位数各位的数字,请前辈指教 小弟郁闷阿,有个小问题大家帮忙看看,不胜感激 star821116(公敌想回家^_^) ,进来! 帮忙看下关于事件的错误 java 动态生成类
foreach(String s : s2){
if(list.contains(s)){
//equals
} else {
//not equals
}
}我觉得还有更简便的方法。
String[] s1 = {"a","b","c"};
String[] s2 = {"b","d","e"};
HashSet<String> ss1 = new HashSet<String>();
HashSet<String> diff;
HashSet<String> same = new HashSet<String>();
ss1.addAll(Arrays.asList(s1));
diff = (HashSet<String>) ss1.clone();
for (String s:s2){
if (ss1.contains(s)){
same.add(s);
diff.remove(s);
}
else
diff.add(s);
}
System.out.println(diff);
System.out.println(same);
}
public class Test { static String[] s1 = { "a", "b", "c" };
static String[] s2 = { "b", "d", "e" };
public static void method1() {
HashSet<String> ss1 = new HashSet<String>();
HashSet<String> same = new HashSet<String>();
for (String s : s2) {
if (ss1.contains(s)) {
same.add(s);
}
}
System.out.println(same);
} public static void method2(){
char[] charS1 = new String(s1[0]+s1[1]+s1[2]).toCharArray();
char[] charS2 = new String(s2[0]+s2[1]+s2[2]).toCharArray();
for(char ch:charS1){
for(char ch2:charS2){
if(ch == ch2){System.out.println(ch2);}
}
}
}
public static void method3(){
for(String str:s1){
for(String str2:s2){
if(str.equals(str2)){
System.out.println(str);
}
}
}
}
public static void method4(){
for(String str:s1){
for(String str2:s2){
if(str.hashCode()==str2.hashCode()){
System.out.println(str);
}
}
}
}
public static void main(String[] args) {
long start = System.nanoTime();
//method1();
//method2();
//method3();
//method4();
System.out.println("Time:"+(System.nanoTime()-start));
}
}
一个个的方法去掉注释测试,一次测试一个,不要把注释都去掉,结果自己看,其实方法多的是