在Java中不用for循环用序列号填充列表字段

uz75evzq  于 2023-02-07  发布在  Java
关注(0)|答案(3)|浏览(279)

假设我有一个简单的Person对象,它有三个字段:姓名(字符串)、年龄(字符串)和顺序(整数)。
然后,我创建一个Person对象列表(List personList),按姓名和年龄排序(在我的例子中是降序),但只初始化了order字段,如下所示:
“安德鲁”、“52”、“詹姆斯”、“34”、“詹姆斯”、“28”、“玛丽亚”、“19”、“
我的目标是用一个序列号来填充order字段,该序列号显示列表中的顺序,如下所示:
“八月”、“52”、1“詹姆斯”、“34”、2“詹姆斯”、“28”、3“玛丽亚”、“19”、4
我用一个简单的For循环实现了这个
for(int i=0;i<personList.size();i++) { personList.get(i).setOrden(i+1); }
有没有更清洁/更有效的方法来做到这一点?
谢谢你。问候。

2eafrhcq

2eafrhcq1#

你可以使用静态变量,它会一直增加,你可以把它分配给你的订单号。
或者更好的是,如果你把你的订单保存到Db中,那么初始化Db中的序列

public class Test {

    private static int orderNo =1;
    public static void main(String args[])
    {
         createOrder("Andrew",52);
         createOrder("James",34);
         createOrder("Jemas",28);
         createOrder("Maria",19);
    }

    public void createOrder(String name , int age)
    {
        Order order = new Order(name , age , orderNo);
        orderNo++;
        System.out.print(order);
    }

}
4nkexdtk

4nkexdtk2#

尝试使用API中的IntStream.range。

IntStream.range(0, personList.size())
 .forEach(i -> personList.get(i).setOrden(i));
aurhwmvo

aurhwmvo3#

不需要API,for-each循环就足够了

int index = 1;
for(Person p : personList) {
    p.setOrder(index++);
}

相关问题