package com.springboot.demo;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class SimpleTest {
private static final List<String> STR_LIST = new ArrayList<String>() {{
this.add("0");
this.add("1");
this.add("2");
this.add("3");
this.add("4");
this.add("5");
this.add("6");
this.add("7");
this.add("8");
this.add("9");
}};
private static final Random RANDOM_INDEX = new Random();
/**
* 从0~9 随意组成8位不重复的字符串,生成4个不同的字符串
*/
@Test
public void simpleTest() {
// 定义4个不同的字符串List
List<String> fourNoRepeatList = new ArrayList<>();
// 组成4个不同的字符串
addFourStrToList(fourNoRepeatList);
// 打印
printlnList(fourNoRepeatList);
}
/**
* 打印
* @param fourNoRepeatList
*/
private void printlnList(List<String> fourNoRepeatList) {
fourNoRepeatList.stream().forEach(str -> System.out.println(str));
}
/**
* 组成4个不同的字符串
* @param fourNoRepeatList
*/
private void addFourStrToList(List<String> fourNoRepeatList) {
// 获取第一个不重复的字符串
String randomEightNoRepeatStr = getRandomEightNoRepeatStr(STR_LIST);
fourNoRepeatList.add(randomEightNoRepeatStr);
// 循环剩下三个不重复的字符串
while (isFourListSize(fourNoRepeatList)) {
// 随意组成8位不重复的字符串
randomEightNoRepeatStr = getRandomEightNoRepeatStr(STR_LIST);
if (!fourNoRepeatList.contains(randomEightNoRepeatStr)) {
fourNoRepeatList.add(randomEightNoRepeatStr);
}
}
}
/**
* 是否存在四个不同的字符串
* @param fourNoRepeatList
* @return
*/
private static boolean isFourListSize(List<String> fourNoRepeatList) {
return fourNoRepeatList.size() < 4;
}
/**
* 随机获取8位不同数字的字符串
* @param lists
* @return
*/
private String getRandomEightNoRepeatStr(List<String> lists) {
List<String> copyList = new ArrayList<>(lists);
StringBuffer stringBuffer = new StringBuffer();
for (int i = 8; i > 0; i--) {
int indexArr = RANDOM_INDEX.nextInt(i + 2);
String randomStr = copyList.get(indexArr);
copyList.remove(randomStr);
stringBuffer.append(randomStr);
}
return stringBuffer.toString();
}
}