将List <String>转换为List <MyObject>,其中MyObject包含表示顺序的int

Nim*_*sky 6 java design-patterns

有没有一个模式,或内置功能我缺少或我应该像这样循环

public List<MyObject> convert(List<String> myStrings){

    List<MyObject> myObjects = new ArrayList<MyObject>(myStrings.size());

    Integer i = 0;
    for(String string : myStrings){
        MyObject myObject = new myObject(i, string);
        myObjects.add(object);
        i++;
    }
    return myObjects;
}
Run Code Online (Sandbox Code Playgroud)

这是因为我需要将列表保存到数据库并保留排序.

Mar*_*ers 8

你可以使用番石榴:

List<MyObject> myObjects = Lists.transform(myStrings,
   new Function<String, MyObject>() {
       private int i = 0;
       public MyObject apply(String stringValue) {
           return new MyObject(i++, stringValue);
       }
   });
Run Code Online (Sandbox Code Playgroud)

真的,它只是将迭代带入库中.就编写的实际代码而言,在Java 8引入闭包之前,它们大致相同.

但是,您应该知道将函数设置为有状态(with i)是不好的形式,因为现在它应用于列表的顺序很重要.