我正在根据订单
比较两个ArrayListstotal_list的大小将始终大于sub_list
import java.util.ArrayList;
import org.json.JSONException;
public class MrTest {
public static void main(String args[]) throws JSONException
{
ArrayList<String> total_list = new ArrayList<String>();
ArrayList<String> sub_list = new ArrayList<String>();
ArrayList<String> un_common_list = new ArrayList<String>();
total_list.add("Beverages");
total_list.add("Hot");
total_list.add("Sai1");
total_list.add("Sai2");
total_list.add("Sai3");
sub_list.add("Sai1");
sub_list.add("Sai2");
sub_list.add("Sai3");
for(int i=0;i<total_list.size();i++)
{
String total_name = total_list.get(i);
String sub_name = sub_list.get(i);
if(total_name.equals(sub_name))
{
}
else
{
un_common_list.add(total_name);
}
}
System.out.println(un_common_list);
}
}
我正在
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
at java.util.ArrayList.rangeCheck(ArrayList.java:604)
at java.util.ArrayList.get(ArrayList.java:382)
at MrTest.main(MrTest.java:35)
我希望输出为
[Beverages, Hot]
任何人都可以帮助我,如何将输出作为
[Beverages, Hot] in this case ??
答案 0 :(得分:2)
我想你只是想:
total_list.removeAll(sub_list);
如果您想保留total_list
:
List<String> uncommon = new ArrayList<>(total_list);
uncommon.removeAll(sub_list);
答案 1 :(得分:1)
您对两个列表使用相同的索引,导致子列表超出范围。在循环中使用循环,并使用布尔值检查它是否与任何值匹配,如果它不匹配,则应将该字符串添加到不常见的列表中。
boolean inlist=false;
for(int i=0;i<total_list.size();i++)
{
String total_name = total_list.get(i);
for(int k=0;k<sub_list.size();k++)
{
String sub_name = sub_list.get(k);
if(total_name.equals(sub_name))
{
inlist=true;
}
}
if (!inlist){un_common_list.add(total_name);}
inlist=false;
}
答案 2 :(得分:0)
for(int i=0;i<total_list.size();i++)
// Total_list size is 5
{
String total_name = total_list.get(i);
String sub_name = sub_list.get(i);
// sub_list size is 3,
// but you are calling sublist.get(3), sublist.get(4) and sublist.get(5)
}
答案 3 :(得分:0)
我将使用1循环,首先使用System.arraycopy将total_list的副本复制到un_common_list,然后迭代sub_list并从un_common_list中删除sub_list中的元素,顺序应该保留
但是removeAll()也应该保留顺序,只需使用数组副本
答案 4 :(得分:0)
如果要保持插入顺序,那么可以尝试这种情况
for(int i=0;i<total_list.size() && i<sub_list.size();i++)