沒有內置功能,但它不是太難。例如:
public static void main(String[] args) {
List<String> l = new ArrayList<String>();
add("foo", l);
add("foo", l);
add("foo", l);
add("foo", l);
add("foo", l);
add("foo", l);
add("foo", l);
add("foo", l);
System.out.println(l);
}
static void add(String element, List<String> elements) {
if (elements.contains(element)) {
elements.add(nextValudFor(element, elements));
} else {
elements.add(element);
}
}
static String nextValudFor(String element, List<String> elements) {
for (char c = 'a'; c <= 'z'; c++) {
String next = element + '_' + c;
if (!elements.contains(next)) {
return next;
}
}
throw new IllegalStateException("Ran out of letters!");
}
輸出:
[foo, foo_a, foo_b, foo_c, foo_d, foo_e, foo_f, foo_g]
爲了達到最佳效果,你可能想包裝這件事到您自己的列表類型爲合適。
thx很多我試試這個解 – hudi