条件:
现在有两数组(假设为String str1[]={"aa","bb","cc","dd","ee","ff"},str1[]={"ee","aa","sgg","fourth","admin","cc"}
现在我要把两个字符数组中相同的元素放在第三个数组中
如何实现?
(请付上相应代码,有注释更佳)
现在有两数组(假设为String str1[]={"aa","bb","cc","dd","ee","ff"},str1[]={"ee","aa","sgg","fourth","admin","cc"}
现在我要把两个字符数组中相同的元素放在第三个数组中
如何实现?
(请付上相应代码,有注释更佳)
public static void main(String[] args) {
String str1[] = { "aa", "bb", "cc", "dd", "ee", "ff" }, str2[] = {
"ee", "aa", "sgg", "fourth", "admin", "cc" };
for (int i = 0; i < str1.length; i++) {
for (int j = 0; j < str2.length; j++) {//双循环遍历两个数组
if (str1[i].equals(str2[j])) {
System.out.println(str1[i]);//打印相同的部分
}
}
}
}
}结果:
aa
cc
ee
public static void main(String[] args) {
String str1[] = { "aa", "bb", "cc", "dd", "ee", "ff" }, str2[] = {
"ee", "aa", "sgg", "fourth", "admin", "cc" };
List<String> list = new ArrayList<String>();
int num = 0;
for (int i = 0; i < str1.length; i++) {
for (int j = 0; j < str2.length; j++) {
if (str1[i].equals(str2[j])) {
list.add(str1[i]);
num ++;
}
}
}
String[] str3 = new String[num];
list.toArray(str3);
for (int i = 0 ; i < str3.length; i ++){
System.out.print(str3[i] + " ");
}
}
}输出结果:
aa cc ee
public class CompareArray {
public static void main(String[] args){
String str1[]={"aa","bb","cc","dd","ee","ff"};
String str2[]={"ee","aa","sgg","fourth","admin","cc"};
List<String> list = new ArrayList<String>();//定义一个保存相同元素的列表
List<String> str1_list = Arrays.asList(str1);//得到指定数组的列表视图
for(String str : str2){
if(str1_list.contains(str))list.add(str);
}
System.out.println(list);//指印的结果是:[ee, aa, cc]
String[] str3 = new String[list.size()];//将列表转化成数组
list.toArray(str3);
}
}
public static void main(String[] args) {
String str1[] = { "aa", "bb", "cc", "dd", "ee", "ff" }, str2[] = {
"ee", "aa", "sgg", "fourth", "admin", "cc" };
List<String> list = new ArrayList<String>();
int num = 0;
for (int i = 0; i < str1.length; i++) {
for (int j = 0; j < str2.length; j++) {
if (str1[i].equals(str2[j])) {
list.add(str1[i]);
num ++;
}
}
}
String[] str3 = new String[num];
list.toArray(str3);
for (int i = 0 ; i < str3.length; i ++){
System.out.print(str3[i] + " ");
}
}
}3楼 "list.toArray(str3);"牛
另外还可以用集合类,比循环简单
public static void main(String[] args) {
String str1[]={"aa","bb","cc","dd","ee","ff"},
str2[]={"ee","aa","sgg","fourth","admin","cc"};
ArrayList<String> list = new ArrayList<String>(); //两个数组合并。
TreeSet<String> set = new TreeSet<String>(); //两个数组不同的元素。
for (int i = 0; i < str1.length; i++) {
set.add(str1[i]);
list.add(str1[i]);
}
for (int i = 0; i < str2.length; i++) {
set.add(str2[i]);
list.add(str2[i]);
}
Iterator itr = set.iterator();
while(itr.hasNext()) { //删除相同的元素。
Object s = itr.next();
if (list.contains(s))
list.remove(s);
}
String[] str3 = new String[list.size()];
list.toArray(str3);
for (int i = 0 ; i < str3.length; i ++){
System.out.print(str3[i] + " ");
}
}
比较占用资源。但比起两个for嵌套,复杂度降低了。结果:ee aa cc
String str1[]={"aa","bb","cc","dd","ee","ff"};
String str2[]={"ee","aa","sgg","fourth","admin","cc"} ;
Set< String> list1 = new HashSet<String>();
Set< String> list2 = new HashSet<String>();
Set<String> list = new HashSet<String>();
CollectionUtils.addAll(list1, str1);
CollectionUtils.addAll(list, str1);
CollectionUtils.addAll(list2, str2);
list1.removeAll(list2);
list.removeAll(list1);
String[] str = new String[list.size()];
list.toArray(str);
for(int i = 0; i < str.length; i++)
{
System.out.println(str[i]);
}str就是那个数组。
import java.util.HashSet;
import java.util.Set;public class A {
public static void main(String[] args) {
String str1[] = { "aa", "bb", "cc", "dd", "ee", "ff" };
String str2[] = { "ee", "aa", "sgg", "fourth", "admin", "cc" };
Set<String> list1 = new HashSet<String>();
Set<String> list2 = new HashSet<String>();
Set<String> list = new HashSet<String>();
Collections.addAll(list1, str1);
//System.out.println("list1" + list1); Collections.addAll(list, str1);
//
System.out.println("list" + list); Collections.addAll(list2, str2);
//System.out.println("list2" + list2); list1.removeAll(list2);
//System.out.println("list1.removeAll(list2)" + list1);
list.removeAll(list1);
//System.out.println("list.removeAll(list1)" + list); String[] str = new String[list.size()];
list.toArray(str);
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]);
}
}
}
String str1[]={"aa","bb","cc","dd","ee","ff"},str2[]={"ee","aa","sgg","fourth","admin","cc"} ;
String str[]=null;//待求数组.
ArrayList a1 = new ArrayList(str1);
ArrayList a2 = new ArrayList(str2);
ArrayList a = new ArrayList();
a.addAll(a1);
a1.removeAll(a2);a2.removeAll(a);
a.addAll(new ArrayList(a2));
a.removeAll(a1);
a.removeAll(a2);
str = new String [a.size()];
a.toArray(str);
可以这样吗?
String str[]=null;//待求数组.
ArrayList a = new ArrayList(str1);
a.retainAll(new ArrayList(str2));
str = new String[a.size()];
a.toArray(str);
//搞定,str就是所求数组