Java 如何检查ArrayList<;ArrayList<;字符串>&燃气轮机;包含某个ArrayList<;字符串>;

Java 如何检查ArrayList<;ArrayList<;字符串>&燃气轮机;包含某个ArrayList<;字符串>;,java,arraylist,equals,Java,Arraylist,Equals,标题很好地说明了我遇到的麻烦,以下是我的代码: // fields required for traversal private Queue<ArrayList<String>> q; private ArrayList<ArrayList<String>> r; Set<String> stringList = getMeStrings(); for(String s : stringList) { ArrayList<

标题很好地说明了我遇到的麻烦,以下是我的代码:

// 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);
    }
}
//遍历所需的字段
专用队列q;
私人ArrayList r;
Set stringList=getMeStrings();
用于(字符串s:stringList)
{
ArrayList stringsRoute=新的ArrayList();
添加(getSomeString());
stringsRoute.add(s);
如果(!r.contains(stringList))
{
如果(!q.contains(stringList))
{
q、 添加(字符串列表);
}
r、 添加(字符串列表);
}
}
For循环中的If语句总是失败,我认为原因是我正在创建一个新的ArrayList对象(不同的引用),而If语句没有检查[r]中每个ArrayList的内容是否以相同的顺序包含相同的元素。。等

我知道需要使用.equals来确定两个ArrayList是否相似,但我有一个ArrayList,其中包含许多其他ArrayList

如何检查父ArrayList是否包含与我正在创建的新ArrayList相同的ArrayList

我希望我的目标是明确的


谢谢您需要遍历整个
ArrayList
,然后使用ArrayList类的
equals
方法将
ArrayList
的每个元素与
StringsRoute
进行比较。 为了实现Frach循环,可以考虑得到<代码> > ARARYLIST< /COD>的大小。如果我们有
ArrayList ar=newarraylist()
我们可以使用
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
您可能希望使用集合列表,以避免与顺序发生冲突


请不要以大写字母开头变量名
StringsRoute
看起来像一个类而不是一个变量!您是否知道
stringsRoute
始终包含2个元素?感谢您指出jlordo,我稍后需要更改它,但目前我正在寻找主要问题的简洁解决方案。再次感谢。@Ciwan:好吧,现在就是这样(总是两条线)我将引入一个类
StringTuple
,并为此提供一个
equals
方法,并使用
List
而不是
List
@Ciwan…如果arraylist r不包含arraylist stringList,您是否知道您将进入if循环?如果stringList arraylist中存在,您的if循环将始终失败主数组列表r。那么foreach循环?我在这些方面很糟糕(我知道如何用文字表达,但不知道如何编码!>>对于r中的每个ArrayList,请查看它是否等于给定的ArrayList。如果其中任何一个相等,请将布尔值设置为true?
List< Set< String > > r;
new HashSet(Arrays.asList("1","2")).equals(new HashSet(Arrays.asList("2","1"))) == true