正则表达式在java arraylist中搜索正则表达式
ArrayList <String> list = new ArrayList();
list.add("behold");
list.add("bend");
list.add("bet");
list.add("bear");
list.add("beat");
list.add("become");
list.add("begin");
有一种方法可以搜索regexp bea。*然后像ArrayList一样获取索引。索引
编辑:返回项目很好,但我需要比线性搜索性能更好的东西
# 1 楼答案
我不相信有JavaAPI方法可以做到这一点,也没有Apache Commons方法可以做到这一点。然而,你自己动手并不困难
# 2 楼答案
这将是线程的复兴,但可能对某些人有用。您可能不需要索引,可能下一步将对匹配正则表达式的项执行某些操作,因此您需要索引。但您可以使用Java8流和lambda表达式:
您可以获取原始列表,将其转换为流,在其上运行一个过滤器,该过滤器运行lambda以匹配您的模式,然后将其转换回列表。但你可以保持它的流和运行。foreach使用另一个lambda表达式对其进行处理
# 3 楼答案
一种选择是使用Apache Commons CollectionUtils“选择”方法。您需要创建一个谓词对象(一个具有单个“evaluate”方法的对象,该方法使用正则表达式检查匹配项并返回true或false),然后可以在列表中搜索匹配项。但是,它不会返回索引,而是返回一个包含项本身的集合
# 4 楼答案
这是番石榴的一条班轮:
# 5 楼答案
有内置的方法吗?据我所知没有。然而,这应该是相当容易做到自己。下面是一些完全未经测试的代码,可以让您了解基本的想法:
我可能对模式和ListIterator部分的使用有点错误(我从未使用过这两个部分),但这应该给出了基本的想法。您还可以在迭代器上执行简单的for循环,而不是while循环
# 6 楼答案
赫姆斯基本上是对的。如果需要字符串而不是索引,则可以使用Java 5 foreach循环进行改进: