如何在java中生成增量字母数字ID?(String ID)

时间:2017-02-01 22:15:33

标签: java

我有一个方法,例如,

public Order newOrder(Product prod, Supplier supp)

需要生成一个格式为" ordn"的唯一字母数字代码,其中' n'是从1开始的渐进数字,因此每次添加新订单时,ID将增加到" ord2" " ord3" ...

我该怎么做?是否可以通过子串?

来实现

我知道如何生成一个整数ID,但这个是一个String ,所以我的问题更像是如何增加一个字符串中的整数。

我尝试将其子串到String ocode = "ord" + n,只是增加" n",但是如何将这整个内容分配给新订单?还是我需要一个循环? (代码必须是一个String我猜,后来有一个findOrder()方法通过接受String代码来检索特定的顺序。< - 不确定它是否重要。)

顺便说一下,我是Java新手,这只是练习的一部分。

解决了,结果是子串工作......

2 个答案:

答案 0 :(得分:2)

您可以使用statictutorial)int,并为每个订单增加1。静态计数器的当前值是当前订单的id。当您需要返回字符串ordn时,返回"ord"+id。这是一个简单的例子:

public class Order {

    static int sharedCounter = 0; //static, shared with ALL `Order` instances
    int orderId = 0; //Specific to particular `Order` instance

    public Order() {
       this.orderId = sharedCounter++;
    }

    public String getOrderId(){
       return "ord"+this.orderId;
    }
}

请注意,每次执行程序时,静态ID都将从零开始。如果你把它写成一个练习,那可能就好了;但如果您需要为现实世界中的某些订单实际生成唯一ID,那么您需要将该信息存储在某个地方,可能是数据库。

另外,请注意我在示例中使用了共享int,这不是线程安全的。如果线程安全很重要,则需要AtomicInteger

答案 1 :(得分:0)

尝试

String newOrderId = "ord" + (Integer.parseInt(lastOrderId.substring(3)) + 1);