为了账号安全,请及时绑定邮箱和手机立即绑定

在存储在哈希集中的生成代码中查找单词

在存储在哈希集中的生成代码中查找单词

莫回无 2021-09-29 10:12:01
示例生成代码:910love009tre我想检查生成的代码中是否有特定的单词。我正在尝试使用contains-method,但它似乎没有给我所需的输出。import java.security.SecureRandom;import java.util.HashSet;import java.util.Set;public class AlphaNumericExample {  public static void main(String[] args) {    enter code here    AlphaNumericExample example = new AlphaNumericExample();    Set<String> codes = new HashSet<>();    for (int x = 0;x< 100 ;x++ ) {       codes.add(example.getAlphaNumeric(16));    System.out.println(codes.contains("love"));//Im trying to check if the generated codes that have been stored in hashset have form a word     }    System.out.println("Size of the set: "+codes.size());  }  public String getAlphaNumeric(int len) {    char[] ch = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();    char[] c = new char[len];    SecureRandom random = new SecureRandom();//    for (int i = 0; i < len; i++) {      c[i] = ch[random.nextInt(ch.length)];    }    return new String(c);  }}
查看完整描述

3 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

在这种情况下, contains 方法检查整个对象是否匹配。如果它包含特定的字符序列,则不会,因此 13 个字符的对象永远不会匹配 4 个字母的序列


代替


System.out.println(codes.contains("love"));//Im trying to check if the generated codes that have been stored in hashset have form a word 

在每个单独的字符串上尝试 contains 方法,而不是 HashSet 的 contains 方法


for (String code: codes) { 

    if  (code.contains("love")    {

     System.out.println("found!")       

    }

}


查看完整回答
反对 回复 2021-09-29
?
慕标5832272

TA贡献1966条经验 获得超4个赞

像这样使用它


for (int x = 0; x < 100; x++) {

    String generated = example.getAlphaNumeric(16);

    codes.add(generated);

    System.out.println(generated.contains("love"));

}


查看完整回答
反对 回复 2021-09-29
?
守候你守候我

TA贡献1802条经验 获得超10个赞

您正在检查代码集中的完整字符串“love”。您需要在代码集中的每个代码中检查它是否存在。您可以使用流来检查这一点。

boolean isPresent = codes.stream().anyMatch( code -> code.indexOf( "love" ) != -1 );


查看完整回答
反对 回复 2021-09-29
  • 3 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信