首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在java中自动重命名对象

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

Stack Overflow用户
提问于 2011-10-14 05:51:59
回答 2查看 2.2K关注 0票数 0

我有一串字符串。当我想要添加新字符串时使用List<String> elements= new ArrayList<String>();

elements.add("element");

名称是我想要自动重命名为_a-z的数组列表...当windows重命名文件时有两个相同的文件...例如,当我再次添加元素时,我想自动将其重命名为element_a。所以

代码语言:javascript
复制
    if (elements.contains("element")) { 
    something
}

java中有什么功能吗?thx请求帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-14 07:01:45

没有内置的函数,但也不是很难。例如:

代码语言:javascript
复制
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!");
}

输出:

代码语言:javascript
复制
[foo, foo_a, foo_b, foo_c, foo_d, foo_e, foo_f, foo_g]

为了获得最好的效果,您可能希望在适当的时候将其封装到您自己的列表类型中。

票数 1
EN

Stack Overflow用户

发布于 2011-10-14 05:55:09

你可以创建自己的列表来扩展ArrayList,覆盖add(...)方法并首先检查字符串是否已存在于列表中(super.contains(...))然后根据需要重命名,然后照常添加(super.add(...))。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7760872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档