列如输入字符串a,就会查询所有含a的单词和不含有a的单词,输入ab就会查询有a和b
package test5;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Five {
static Set<String> list = new HashSet<String>();
static Set<String> list2 = new HashSet<String>();
static Set<String> list1 = new HashSet<String>();
// 生成大小写6位数字母作为字典
public static String ranDom() {
String sum = "";
// 1.创建一个长度为62的字符数组
char[] chars = new char[52];
// 2.使用循环给字符数组里面塞满字符
for (int i = 0; i < 26; i++) {
// 记住:char本质上就是数字
// 'a' + i ==> 97 + i
// 0~25的位置,放小写字母
chars[i] = (char) ('a' + i);
// 26~51的位置放大写字母
chars[i + 26] = (char) ('A' + i);
}
// System.out.println( chars );
// 3.创建Random对象
Random ran = new Random();
// 4.循环6次,每次得到一个0~61之间的随机数字
char[] result = new char[6];
for (int i = 0; i < result.length; i++) {
// 5.根据随机数字,从字符数组里面获取一个字符出来
// 把获取得到的字符,放到新的字符数组里面
int index = ran.nextInt(chars.length);
// 从字符数字里面获取一个字符出来
char c = chars[index];
sum = sum + c;
}
return sum;
}
// 把输入的字符串转为字符查询英文字典里面是否有
public static void quickSearch(char[] arr, String[] a2, String str) {
for (int j = 0; j < arr.length; j++) {
for (int i = 0; i < a2.length; i++) {
// 输入的字符串换为字符转为小写是否在字典里面
int n = a2[i].toLowerCase().indexOf(arr[j]);
// 输入的字符串转为小写是否在字典里面
int s = a2[i].toLowerCase().indexOf(str);
if (n >= 0 && s >= 0) {
// 查询到存在list里面
list.add(a2[i]);
} else {
// 查询不到存在list2里面
list2.add(a2[i]);
}
}
}
System.out.println("单词表查询到单词:");
int i = 0;
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
if (i % 20 == 0 & i != 0)
System.out.println();
System.out.print(iterator.next() + " ");
i++;
}
System.out.println();
System.out.println();
System.out.println("单词表查询不到单词:");
System.out.println();
int j = 0;
Iterator<String> iterator1 = list2.iterator();
while (iterator1.hasNext()) {
if (j % 20 == 0 & j != 0)
System.out.println();
System.out.print("-" + iterator1.next() + " ");
j++;
}
}
public static void test() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串");
// 将十万个随机组成的6位数英文单词作为字典存进set集合里面
for (int i = 0; i < 100000; i++) {
String a = ranDom();
list1.add(a);
}
String[] a2 = list1.toArray(new String[0]);
// String[] a1= {"user","she","hi","where","under"};
String str = sc.next();
// 把输入的字符大写转为小写
char[] arr = str.toLowerCase().toCharArray();
quickSearch(arr, a2, str);
}
public static void main(String[] args) {
test();
}
}