Java获取对象列表中的参数列表

时间:2014-08-01 07:17:54

标签: java list arraylist

我有一个简单的问题,但我不知道如何搜索它...

假设我有一个对象列表,List和MyObject是这样的:

List<MyObject> mo;


class MyObject{
      private SecondObject so;
    }

    class SecondObject{
      private String sp;

    }

我想检索MyObject列表中的字符串参数列表,我管理的唯一方法是在List上循环...

有更聪明/更快的方式吗?

谢谢你,再见!!

4 个答案:

答案 0 :(得分:1)

如果我理解了您的问题,可能应该使用 Map<String, Object> ,您可以通过访问元素(无需循环)。 /> 您必须使用列表中的元素初始化地图:SecondObject.sp为,MyObject为对象

答案 1 :(得分:0)

你可以使用Guava库。特别是Iterables.transform()方法。

以下是一个例子:

List<MyObject> list = ...
Iterable<String> strings = Iterables.transform(list,
                        new Function<MyObject, String>() {
                            @Override
                            public String apply(MyObject obj) {
                                return obj.getSecondObject().getSp();
                            }
                        });

答案 2 :(得分:0)

我认为没有直接的方法。但您可以创建自己的自定义列表。

public class CustomList implements List<MyObject> {

    private List<SecondObject> list = new ArrayList<SecondObject>();
    private List<MyObject> listMy = new ArrayList<MyObject>();

    public List<SecondObject> getSecondList(){
         return list;
    }

    @Override
    public void add(int index, MyObject element) {
        listMy.add(index, element);
        list.add(index, element.sp);
    }

....... // Override other methods also

}

现在您可以使用getSecondList()来获取SecondObjectList。它会比枚举更快。

注意:您还必须根据您的要求覆盖List界面中的其他方法。

答案 3 :(得分:0)

使用java 8,您可以执行以下操作:

List<MyObject> myObjectList = new ArrayList<MyObject>();
...
List<String> spList = myObjectList.stream().map(mo -> mo.getSo().getSp()).collect(Collectors.toList());