String[] stringArray = getResources().getStringArray(R.array.my_string_array);
想获得public class Obj {
List<Entities> entities;
}
public class Entities {
List<Fields> fields;
}
public class Fields {
List<Value> values; //Get only first member : values.get(0)!!!!
}
public class Value {
public String getValue() {
return value;
}
}
- (包含值的实体列表)
这就是我累了,但它只返回List
List<List<String>>
这是有效的,但看起来并不好
obj.getEntities().stream()
.map(m -> m.getFields())
.flatMap(o -> o.stream())
.map( k -> k.getValues().get(0).getValue())
.collect(Collectors.toList());
答案 0 :(得分:2)
通过将函数提取到变量中,可以使其更具可读性:
Function<Entities, List<String>> extractFirstFieldsValues = m -> m.getFields().stream()
.map(o -> o.getValues().get(0).getValue())
.collect(Collectors.toList());
List<List<String>> s1 = obj.getEntities().stream()
.map(extractFirstFieldsValues)
.collect(Collectors.toList());
如果需要,您可以对o -> o.getValues().get(0).getValue()
执行相同操作,而不是拥有一个复杂的lambda,您将拥有三个简单的lambda。
答案 1 :(得分:1)
我无法说明为什么你发现不好,我只能想到这种方式,但它几乎没有任何好处,可能会更具可读性:
obj.getEntities().stream()
.flatMap(e -> Stream.of(e.getFields().stream()
.map(f -> f.getValues().get(0).getValue())))
.collect(Collectors.mapping(
x -> x.collect(Collectors.toList()),
Collectors.toList()));