一、查找重复的字符串
-
需求
创建一个长度是100的字符串数组
使用长度是2的随机字符填充该字符串数组
统计这个字符串数组里重复的字符串有多少种 -
思路
①创建一个功能,可以创建任意长度的字符串
②初始化长度100的数组,并进行打印
③查找重复
④打印,有几种,分别是什么 -
代码实现
public class HashSet_test {
public static void main(String[] args) {
String[] s = new String[100];
for (int i = 0; i < s.length; i++) {
s[i] = randomString(2);//获取随机的长度是2的数组
}
for (int i = 0; i < s.length; i++) {//打印
System.out.print(s[i] + " ");
if(i % 20 == 19)//每20个换一次行
System.out.println();
}
// demo1(s);//用字符串来做
HashSet<String> hs = new HashSet<>();
for (String s1 : s) {
int index = 0;
for (String s2 : s) {
if(s1.equalsIgnoreCase(s2)) {
index++;
if(index == 2){
hs.add(s2);//如果是s1,会不区分大小写,所以需要添加s2
break;
}
}
}
}
System.out.println("重复的字符串有" + hs.size() +"种");
System.out.println("重复的字符串分别是");
for (String str : hs) {
System.out.print(str + " ");
}
}
private static void demo1(String[] s) {
for (String s1 : s) {//遍历集合,进行比较
int index = 0;
for (String s2 : s) {
if(s1.equalsIgnoreCase(s2)) {
index++;
if(index == 2){//如果index ==2,找到了一个非己字符串
preserve(s2);//添加的方法
break;
}
}
}
}
System.out.println("重复的字符串有" + pos +"种");
if(pos != 0) {
System.out.println("重复的字符串分别是");
for (int i = 0; i < pos; i++) {
System.out.print(str[i] + " ");
}
}
}
static String[] str = new String[100];
//定义静态变量,静态方法可以直接调用
static int pos;
private static void preserve(String s) {//用来把重复的字符串保存下来
for (int i = 0; i < pos; i++) {//进行判断,用来查重,如果将要保存的字符串与数组里的重复,就不保存
if(str[i].equalsIgnoreCase(s))
return;
}
str[pos++] = s;//把传进来的字符串保存下来,指针向后移动
}
private static String randomString(int i) {//返回一个字符串
String s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
char[] c = new char[i];
for (int j = 0; j < c.length; j++) {
int num = (int)(Math.random() * s.length());
c[j] = s.charAt(num);
}
return new String(c);
}
}