How can I compare String value with ArrayList of String type in Java?
我的要求是将
用
1 |
如果ArrayList中存在String,则此函数将返回true,否则将返回false。
这是您的方法:
1 2 3 4 | private boolean containsString(String testString, ArrayList<String> list) { return list.contains(testString); } |
查看List#contains(T obj)方法,如下所示:
1 2 3 4 5 | List<String> list = new ArrayList<String>(); list.add("abc"); list.add("xyz"); list.contains("abc"); // true list.contains("foo"); // false |
ArrayList可以包含一个或多个字符串。您不能将String与ArrayList进行比较。但是您可以不使用
1 2 3 |
您可以考虑以下几种选择:
- 一个简单的循环,在列表的每个成员上使用equals将其与字符串A进行比较。
- 排序列表中的所有字符串以增强比较并查找列表中的字符串是否与A匹配。
- 使用sortedSet实现以上
- 在列表中的每个项目和字符串A上使用intern方法将alls字符串放入内部字符串池。这将允许使用==比较字符串,并且不再等于。这样比较就会快得多。
- 使用哈希图实现更好的比较速度
- 身份哈希图以混合前面的两种策略。
好吧,这些方法的优缺点,都取决于您要执行的操作以及为什么以及如何比较字符串。
问候,
斯特凡
如果您愿意使用Lambdaj,请按以下方式检查String的存在:
1 2 3 | private boolean isContains(ArrayList<String> listOfStrings, String testString) { return (Lambda.select(listOfStrings, Matchers.equalTo(testString)).size() != 0); } |
使用
1 | select(listOfStrings, equalTo(testString)); |