Android 比较两个数组列表元素并获取非公共元素
我做过这样的事情:Android 比较两个数组列表元素并获取非公共元素,android,arraylist,compare,Android,Arraylist,Compare,我做过这样的事情: public class MainActivity extends AppCompatActivity { ArrayList<String> al = new ArrayList<String>(); ArrayList<String> a2 = new ArrayList<String>(); @Override protected void onCreate(Bundle savedI
public class MainActivity extends AppCompatActivity {
ArrayList<String> al = new ArrayList<String>();
ArrayList<String> a2 = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
al.add("C");
al.add("A");
al.add("E");
al.add("B");
al.add("D");
al.add("F");
a2.add("C");
a2.add("C");
a2.add("E");
a2.add("B");
a2.add("D");
a2.add("F");
for (int i = 0; i < al.size(); i++) {
for (int j = 0; j < a2.size(); j++) {
if (al.get(i).equals(a2.get(j))) {
a2.remove(j);
Log.e("array 2 ", a2.toString());
break;
}
}
}
}
}
[C, E, B, D, F]
[C, B, D, F]
[C, D, F]
[C, F]
[C]
--我在arraylist 2中有相同的元素,然后我得到了“C”,它应该是空的。也就是说,非公共值为零。试试这个,它会帮助你的
ArrayList<String> al = new ArrayList<String>();
ArrayList<String> a2 = new ArrayList<String>();
al.add("C");
al.add("A");
al.add("E");
al.add("B");
al.add("D");
al.add("F");
a2.add("C");
a2.add("C");
a2.add("E");
a2.add("B");
a2.add("D");
a2.add("F");
Integer a = null;
for (int i=0; i<a1.size(); i++)
{
a = a1.get(i);
if (a2.contains(a)
{
a2.remove(a);
a1.remove(a);
i--;
}
}
ArrayList<String> finaldata = new ArrayList<String>();
finaldata.addAll(a1);
finaldata.addAll(a2);
// finaldata = { A}
ArrayList al=new ArrayList();
ArrayList a2=新的ArrayList();
al.添加(“C”);
al.添加(“A”);
al.添加(“E”);
al.添加(“B”);
al.添加(“D”);
al.添加(“F”);
a2.添加(“C”);
a2.添加(“C”);
a2.添加(“E”);
a2.添加(“B”);
a2.添加(“D”);
a2.添加(“F”);
整数a=null;
对于(inti=0;i当您直接删除for循环中的a2项时,您正在弄乱索引。请参阅下面的解决方案
ArrayList<String> al = new ArrayList<>();
ArrayList<String> a2 = new ArrayList<>();
al.add("C");
al.add("A");
al.add("E");
al.add("B");
al.add("D");
al.add("F");
a2.add("C");
a2.add("C");
a2.add("E");
a2.add("B");
a2.add("D");
a2.add("F");
ArrayList<String> tempToDelete = new ArrayList<>();
for (int i = 0; i < al.size(); i++) {
for (int j = 0; j < a2.size(); j++) {
if (al.get(i).equals(a2.get(j))) {
tempToDelete.add(a2.get(j));
break;
}
}
}
a2.removeAll(tempToDelete);
我建议您使用集合而不是ArrayList。您可以找到一些信息
此外,您还可以在这里阅读一些在中使用java集的示例。只需将break;
替换为以下内容:
j = -1;
代码:
for (int i = 0; i < al.size(); i++) {
for (int j = 0; j < a2.size(); j++) {
if (al.get(i).equals(a2.get(j))) {
a2.remove(j);
Log.e("array 2 ", a2.toString());
j = -1;
}
}
}
for(int i=0;i
al.removeAll(a2)
删除al
和a2
之间的公共项。阅读更多Java
中的final is关键字非常感谢,我尝试了这两种方法,首先对对象数组列表很好地工作。您的解决方案节省了我的时间,干杯:)
for (int i = 0; i < al.size(); i++) {
for (int j = 0; j < a2.size(); j++) {
if (al.get(i).equals(a2.get(j))) {
a2.remove(j);
Log.e("array 2 ", a2.toString());
j = -1;
}
}
}