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

时间:2018-09-19 11:44:13

标签: java

示例生成的代码:910love009tre

我想检查生成的代码中是否包含特定单词。 我正在尝试使用contains方法,但是看起来好像没有给我想要的输出。

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);
  }
}

4 个答案:

答案 0 :(得分:3)

在这种情况下,contains方法检查整个对象是否匹配。如果它包含特定的char序列,则不会,因此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!")       
    }
}

答案 1 :(得分:0)

像这样使用它

print()

答案 2 :(得分:0)

您正在检查代码集中的完整字符串“ love”。您需要在代码集中的每个代码中检查其是否存在。您可以使用流对此进行检查。

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

答案 3 :(得分:0)

在使用contains查找匹配项之前,应将两个字符串都转换为相同的大小写:

String str = "";
codes.add(getAlphaNumeric(16));
str = codes.toString();
System.out.println(str.toLowerCase().contains("love"));