我有一串字符串。当我想要添加新字符串时使用List<String> elements= new ArrayList<String>();
elements.add("element");
名称是我想要自动重命名为_a-z的数组列表...当windows重命名文件时有两个相同的文件...例如,当我再次添加元素时,我想自动将其重命名为element_a。所以
if (elements.contains("element")) {
something
}java中有什么功能吗?thx请求帮助
发布于 2011-10-14 07:01:45
没有内置的函数,但也不是很难。例如:
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]为了获得最好的效果,您可能希望在适当的时候将其封装到您自己的列表类型中。
发布于 2011-10-14 05:55:09
你可以创建自己的列表来扩展ArrayList,覆盖add(...)方法并首先检查字符串是否已存在于列表中(super.contains(...))然后根据需要重命名,然后照常添加(super.add(...))。
https://stackoverflow.com/questions/7760872
复制相似问题