[英]How to check if ArrayList<ArrayList<String>> contains a certain ArrayList<String>
标题很好地说明了我遇到的麻烦,这是我的代码:
// fields required for traversal
private Queue<ArrayList<String>> q;
private ArrayList<ArrayList<String>> r;
Set<String> stringList = getMeStrings();
for(String s : stringList)
{
ArrayList<String> stringsRoute = new ArrayList<String>();
stringsRoute.add(getSomeString());
stringsRoute.add(s);
if(!r.contains(stringList))
{
if(!q.contains(stringList))
{
q.add(stringList);
}
r.add(stringList);
}
}
我的For循环中的If语句总是失败,我认为原因是因为我正在创建一个新的ArrayList对象(不同的引用),而我的If语句没有检查[r]中每个ArrayList的内容包含相同顺序的相同元素..等等
我知道需要使用.equals来确定两个ArrayList是否相似,但是我有一个ArrayList可以容纳许多其他ArrayList。
如何检查父ArrayList是否包含等于我正在创建的新ArrayList的ArrayList?
我希望很清楚我要实现的目标。
谢谢
你需要遍历整个ArrayList
,然后比较的每个元素ArrayList
与StringsRoute
使用equals
ArrayList类的方法。 要实现foreach循环,您可以考虑获取ArrayList
的大小。 如果我们有ArrayList ar=new ArrayList();
我们可以使用ar.size()
返回大小,然后简单地运行一次for循环ar.size()
来迭代对应的ArrayList
中的每个元素。 希望能解决您的问题。
为了使“ StringsRoute”包含在“ r”中,必须在“ r”中存在一个列表,其中的相同元素具有相同的顺序。
Arrays.asList("1","2") .equals(Arrays.asList("2","1")) == false
Arrays.asList("1","2") .equals(Arrays.asList("1","2")) == true
Arrays.asList(Arrays.asList("1","2")).contains(Arrays.asList("1","2")) == true
Arrays.asList(Arrays.asList("1","2")).contains(Arrays.asList("2","1")) == false
可能是您要使用一组列表以避免麻烦处理订单。
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/AbstractSet.html#equals%28java.lang.Object%29
List< Set< String > > r;
以来:
new HashSet(Arrays.asList("1","2")).equals(new HashSet(Arrays.asList("2","1"))) == true
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.