一、contains方法简介
contains
是Java中String类和Collection接口中所定义的方法。它用于判断一个字符串或集合中是否包含某个元素,返回值为true或false。使用contains
方法不需要关心元素的位置,只需要关心元素是否存在。
//String中contains的用法 String str = "Hello world!"; if(str.contains("world")){ System.out.println("包含 world"); } //Collection中contains的用法 List<String> list = new ArrayList<>(); list.add("java"); list.add("python"); if(list.contains("java")){ System.out.println("包含 java"); }
二、String中contains的用法
contains
方法在String中常用于判断一个字符串是否包含另一个字符串。String类中的contains方法的实现是利用了String类的indexOf方法。具体实现是在原字符串中查找给定子字符串的索引位置,如果索引位置不为-1则表明该子字符串存在于原字符串中,否则不存在。
另外需要注意,contains
方法是区分大小写的,也就是说如果查找的子字符串与原字符串在大小写上不一致,contains
方法会返回false。
String str = "hello world"; if(str.contains("hello")){ System.out.println("包含 hello"); }
三、Collection中contains的用法
在Collection接口实现类中,contains方法一般用于判断集合中是否包含某个元素。Collection类中contains方法的实现是遍历集合元素,逐一对比是否包含目标元素。
List<String> list = new ArrayList<>(); list.add("java"); list.add("python"); if(list.contains("java")){ System.out.println("包含 java"); }
四、使用contains实现模糊匹配
在实际场景中,我们有时需要在集合中进行模糊匹配,这时候可以使用contains
方法。如下代码演示了如何使用contains实现简单的模糊匹配。
List<String> list = new ArrayList<>(); list.add("java"); list.add("python"); list.add("javascript"); String key = "java"; for(String str : list){ if(str.contains(key)){ System.out.println(str); } }
五、使用正则表达式实现contains方法
除了使用原生的contains
方法,还可以使用正则表达式实现contains方法。正则表达式可以实现更加复杂的文本匹配,使用正则表达式实现contains方法可以更好地处理特定的匹配场景。
public static boolean contains(String src, String regex){ Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(src); return matcher.find(); } String str = "hello world"; if(contains(str, "wor.*")){ System.out.println("包含 wor"); }
六、注意事项
在使用contains方法时,需要注意以下几个问题:
- 在使用contains方法判断字符串是否包含某个子字符串时,通常会先判断该子字符串是否为空,否则会抛出空指针异常。
- 在使用contains方法判断集合是否包含某个元素时,需要保证该元素具有正确的重写equals方法,否则会出现判断不准确的情况。
- 在使用正则表达式实现contains方法时,需要保证正则表达式的正确性和合理性,否则会导致匹配失败。