我有这个代码
if(beforeModify.get(i).equals("a")|beforeModify.get(i).equals("e")|beforeModify.get(i).equals("i")|
beforeModify.get(i).equals("o")|beforeModify.get(i).equals("u")|beforeModify.get(i).equals("á")|
beforeModify.get(i).equals("é")|beforeModify.get(i).equals("í")|beforeModify.get(i).equals("ě")|
beforeModify.get(i).equals("y")|beforeModify.get(i).equals("ý")|beforeModify.get(i).equals("ů")|
beforeModify.get(i).equals("ú"))
我可以做得更好吗?
最佳答案
您可以将其编写为List.contains
调用:
if (Arrays.asList("a", "e", etc).contains(beforeModify.get(i))
但是您也可以预先构建一个
Set
并使用它:// Build once, keep the set to reuse.
Set<String> set = new HashSet<>(Arrays.asList("a", "e", etc));
if (set.contains(beforeModify.get(i))
HashSet
的优点是元素数量为O(1)
。 List
将是O(n)
。另外:您正在使用
|
,而不是||
。前者将评估所有操作数,后者将在其中一个被匹配时立即停止。您不需要对它们全部进行评估,因为文字参数上的String.equals
没有副作用。使用||
。