我有:
String[] Value={"Available to trade at 12 30","I love sherlock"}
我想检查列表中是否存在 sherlock 而不使用for each
循环。
答案 0 :(得分:1)
Java流对于此
非常方便String[] value = {"Available to trade at 12 30", "I love sherlock"};
Stream.of(value).anyMatch(s -> s.contains("sherlock"));
如果你想获得有sherlock的字符串:
String[] value = {"Available to trade at 12 30", "I love sherlock"};
Stream.of(value).filter(s -> s.contains("sherlock")).findFirst().get();
如果您不关心订单,请使用findAny()。 findAny和findFirst都返回一个Optional,如果没有匹配则为空,并且会抛出.get()。
答案 1 :(得分:0)
你可以做这样的事情
Arrays.asList(Value).contains("要搜索的字符串");
更好的选择是将数组转换为列表,以便可以使用多个函数
答案 2 :(得分:0)
问题固有地要求你遍历数组中的所有元素,基本上为每个元素执行一个。但是,您可以选择是否需要良好的内存性能或良好的查找执行时间。
如果你想要良好的内存性能,请保持原样并在每次执行检查时遍历列表。为了获得良好的执行时间,您应该创建一个hashset并使用列表中的每个子字符串填充它。这有点耗时并且占用大量内存,但是一旦构建了集合,就可以保留它并重复使用,使每次运行时检查只需要记录时间。
答案 3 :(得分:0)
您可以将数组转换为单个String,然后使用String .contains方法。
String entireArray = Arrays.toString(Value);
boolean sherlockPresent = entireArray.contains("sherlock");