在Java中,如果你有一个字符串列表,并希望确保每个字符串都是唯一的,那么可以通过检查重复项并为重复的字符串添加后缀数字来实现。下面是一个示例代码,展示了如何操作字符串以确保不重复:
import java.util.;
public class UniqueStringGenerator {
public static void main(String[] args) {
List<String> inputList = Arrays.asList("apple", "banana", "apple", "apple", "banana", "cherry");
List<String> uniqueList = makeUnique(inputList);
System.out.println(uniqueList); // 输出: [apple, banana, apple1, apple2, banana1, cherry]
}
public static List<String> makeUnique(List<String> inputList) {
List<String> uniqueList = new ArrayList<>();
Map<String, Integer> stringCountMap = new HashMap<>();
for (String str : inputList) {
if (!stringCountMap.containsKey(str)) {
stringCountMap.put(str, 0);
uniqueList.add(str);
} else {
int count = stringCountMap.get(str) + 1;
stringCountMap.put(str, count);
uniqueList.add(str + count);
}
}
return uniqueList;
}
}
代码解释:
1. 输入列表和输出列表的初始化:
List<String> inputList = Arrays.asList("apple", "banana", "apple", "apple", "banana", "cherry");
List<String> uniqueList = makeUnique(inputList);
2. 生成唯一字符串列表的方法:
public static List<String> makeUnique(List<String> inputList) {
List<String> uniqueList = new ArrayList<>();
Map<String, Integer> stringCountMap = new HashMap<>();
for (String str : inputList) {
if (!stringCountMap.containsKey(str)) {
stringCountMap.put(str, 0);
uniqueList.add(str);
} else {
int count = stringCountMap.get(str) + 1;
stringCountMap.put(str, count);
uniqueList.add(str + count);
}
}
return uniqueList;
}
3. 详细解释:
- 输入列表:包含可能重复的字符串。
- 唯一列表:用来存储处理后的唯一字符串。
- 字符串计数映射:用来记录每个字符串出现的次数。
- 遍历输入列表:对于每个字符串,检查是否已经在映射中。
- 如果不在映射中,将其添加到映射并设置计数为0,并添加到唯一列表。
- 如果在映射中,增加计数,并将计数作为后缀添加到字符串后,添加到唯一列表。
输出:
上述代码的输出将是一个包含唯一字符串的列表,每个重复字符串都附加了一个数字后缀,保证其唯一性:
[apple, banana, apple1, apple2, banana1, cherry]
这种方法可以扩展到更复杂的场景,例如处理文件名、用户输入等,确保所有字符串都唯一且易于识别。