无法将字符串的ArrayList与String数组进行比较

mei*_*ryo 1 java arraylist

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

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

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

[John, Smith, 120]
[Albert, Einstein, 170]
Run Code Online (Sandbox Code Playgroud)

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

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

但是这不起作用,我基本上想要遍历arraylist并找到我的array2是否匹配.我怎样才能做到这一点?

Jon*_*eet 8

列表简单地等于数组.最简单的解决方法是首先将数组包装在列表中:

if (array1.get(i).equals(Arrays.asList(array2))
Run Code Online (Sandbox Code Playgroud)

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

如果你只是想找到第一个匹配的条目,那么indexOf根据路易斯的答案使用也会有效.

我强烈建议你不要array1在不是数组的情况下调用变量.

最后,如果您只是使用List<String>包装器来避免必须创建具有(比如)名称和年龄的真实数据结构,那么请不要:创建一个Person类,因此最终得到:

List<Person> people = new ArrayList<Person>();
Person testPerson = new Person("Albert", "Einstein", 170);
Run Code Online (Sandbox Code Playgroud)

......适当地实现平等和散列,你会很高兴.您的代码将是简单的阅读和维护的方式.

  • @meiryo:正如我在最后所说:不处理字符串,创建一个表示数据的类.这将解决你的两个问题,因为你将年龄作为一个整数,你不需要记住索引的幻数. (2认同)