如何在java中自动重命名对象

时间:2011-10-13 21:51:59

标签: java

我有String列表。 List<String> elements= new ArrayList<String>(); 当我想添加新的字符串

elements.add( “元素”);

名称是我的arraylist我想自动重命名为_ [az ...]当windows重命名文件时有两个相同...所以例如我在arraylist“element”当我再次添加元素时想自动重命名为element_a ... so

    if (elements.contains("element")) { 
    something
}

java中有一些功能吗? 请求帮助

2 个答案:

答案 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类型中。