1

首先,我创建了字符串的 ArrayList:

List<List<String>> array1 = new ArrayList<List<String>>();

然后在用数据填充它并进行打印之后:

[John, Smith, 120]
[Albert, Einstein, 170]

现在我想遍历列表并与say进行比较,String[] array2 = {"Albert", "Einstein", "170"}到目前为止我已经尝试过:

if (array1.get(i).equals(array2)) { blah }

但是这不起作用,我基本上想遍历arraylist并查找我的array2是否匹配。我怎样才能使这项工作?

4

3 回答 3

8

列表根本等于数组。最简单的解决方法是首先将您的数组包装在一个列表中:

if (array1.get(i).equals(Arrays.asList(array2))

然后将使用equals仅对每个项目执行顺序相等检查的实现。

如果您只想找到第一个匹配的条目,那么indexOf按照路易斯的回答使用也可以。

我还强烈建议您不要array1在不是数组时调用变量。

最后,如果您List<String>只是将其用作包装器以避免必须创建一个包含(例如)名称和年龄的真实数据结构,那么不要:创建一个Person类,因此您最终会得到:

List<Person> people = new ArrayList<Person>();
Person testPerson = new Person("Albert", "Einstein", 170);

...适当地实施平等和散列,你会很高兴。这样,您的代码将更易于阅读和维护。

于 2012-09-11T18:24:39.433 回答
2
return listOfListsOfStrings.indexOf(Arrays.asList(arrayOfStrings));

将找出列表中该数组是否有任何匹配项。如果第 i 个列表与数组匹配,则返回 i,如果未找到匹配项,则返回 -1。你甚至不需要for循环。

于 2012-09-11T18:24:32.307 回答
1

根据您给出的示例,两者都是列表。因此,请尝试使用 list1.containsAll(list2) 即 conatinsAll 方法。希望能帮助到你

这里还有一个例子我是否在 java.util.ArrayList.containsAll 中发现了一个错误?

于 2012-09-11T18:35:25.513 回答