当前位置:编程学习 > JAVA >>

效率:取两个字符串的公共字符串

String  A:  d,g,e,t,u,j;
String  B:  g,r,y,t,j,q;

怎么取出在A中同时在B中的字符串: g,t,j

--------------------编程问答-------------------- 1、split,add to java.util.Set A and B
2、B.retainAll(A) --------------------编程问答--------------------
public static void main(String[] args) {
     List<String> listA = new ArrayList<String>();
     List<String> listB = new ArrayList<String>();
     String A = "d,g,e,t,u,j";
     String B = "g,r,y,t,j,q";
     //按逗号分隔后放入对应list
     String [] arrayA = A.split(",");
     String [] arrayB = B.split(",");
     for(int i = 0; i < arrayA.length; i++) {
     listA.add(arrayA[i]);
     }
     for(int i = 0; i < arrayB.length; i++) {
     listB.add(arrayB[i]);
     }
     //使用retainAll取交集
     listA.retainAll(listB);
     System.out.println(listA);
    }
listA中就是你要的字符串 --------------------编程问答--------------------
public static void main(String arg[]) {
String A = "d,g,e,t,u,j";
String B = "g,r,y,t,j,q";
List<String> lista = new ArrayList<String>(Arrays.asList(A.split(",")));
List<String> listb = new ArrayList<String>(Arrays.asList(B.split(",")));
for (int i = lista.size() - 1; i >= 0; i--) {
if (!listb.contains(lista.get(i))) {
lista.remove(lista.get(i));
}
}
System.out.println(lista);
}
--------------------编程问答--------------------
public static void main(String arg[]) {
String A = "d,g,e,t,u,j";
String B = "g,r,y,t,j,q";
List<String> lista = new ArrayList<String>(Arrays.asList(A.split(",")));
List<String> listb = new ArrayList<String>(Arrays.asList(B.split(",")));
lista.retainAll(listb);
System.out.println(lista);
}
--------------------编程问答-------------------- O(m+n)http://blog.csdn.net/xiaorang_java/article/details/8947162 --------------------编程问答-------------------- 用java的api提供的方法是相当有效率的 --------------------编程问答--------------------
引用 4 楼 tlfu_12344 的回复:
public static void main(String arg[]) {
String A = "d,g,e,t,u,j";
String B = "g,r,y,t,j,q";
List<String> lista = new ArrayList<String>(Arrays.asList(A.split(",")));
List<String> listb = new ArrayList<String>(Arrays.asList(B.split(",")));
lista.retainAll(listb);
System.out.println(lista);
}





真有才 --------------------编程问答-------------------- retainAll会不会有问题?
public boolean retainAll(Collection<?> c)仅在此 collection 中保留指定 collection 中所包含的元素(可选操作)。换句话说,移除此 collection 中未包含在指定 collection 中的所有元素。
此实现在此 collection 上进行迭代,依次检查该迭代器返回的每个元素,以查看其是否包含在指定的 collection 中。如果不是,则使用迭代器的 remove 方法将其从此 collection 中移除。

注意,如果 iterator 方法返回的迭代器无法实现 remove 方法,并且此 collection 包含一个或多个在指定 collection 中不存在的元素,那么此实现将抛出 UnsupportedOperationException。
--------------------编程问答-------------------- 哦,主要原因是
如果 iterator 方法返回的迭代器无法实现 remove 方法 --------------------编程问答--------------------
引用 2 楼 u010863631 的回复:
public static void main(String[] args) {
     List<String> listA = new ArrayList<String>();
     List<String> listB = new ArrayList<String>();
     String A = "d,g,e,t,u,j";
     String B = "g,r,y,t,j,q";
     //按逗号分隔后放入对应list
     String [] arrayA = A.split(",");
     String [] arrayB = B.split(",");
     for(int i = 0; i < arrayA.length; i++) {
     listA.add(arrayA[i]);
     }
     for(int i = 0; i < arrayB.length; i++) {
     listB.add(arrayB[i]);
     }
     //使用retainAll取交集
     listA.retainAll(listB);
     System.out.println(listA);
    }
listA中就是你要的字符串
--------------------编程问答-------------------- 往set中放,因为set不可能出现相同的字符串,因此放不进去的就是所需要的:
for(//遍历){
if(set.contains(a[i])){
String s+=a[i]
}else{
set.add(a[i]);
}
}
return s;//s就是所求
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,