我有String列表。
List<String> elements= new ArrayList<String>();
当我想添加新的字符串
elements.add( “元素”);
名称是我的arraylist我想自动重命名为_ [az ...]当windows重命名文件时有两个相同...所以例如我在arraylist“element”当我再次添加元素时想自动重命名为element_a ... so
if (elements.contains("element")) {
something
}
java中有一些功能吗? 请求帮助
答案 0 :(得分:3)
你可以创建自己的扩展ArrayList的列表,覆盖add(...)方法并首先检查字符串是否已经存在于列表中(super.contains(...))然后在必要时重命名它然后像往常一样添加它(super.add(...))。
答案 1 :(得分:1)
没有内置功能,但它并不太难。例如:
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]
为了达到最佳效果,您可能希望根据需要将其包装到您自己的List类型中。