繁体   English   中英

使用流收集器从java对象获取键值

[英]Get key-values from java object using stream collectors

我正在尝试使用流和集合从对象列表中获取键和值列表,但我不知道是否可能。

我有这门课:

public class MyObject {

    private int key1;

    private String key2;

    private String key3;

    public int getKey1() { return key1; }

    public void setKey1(int key1) { this.key1 = key1; }

    public String getKey2() { return key2; }

    public void setKey2(String key2) { this.key2 = key2; }

    public String getKey3() { return key3; }

    public void setKey3(String key3) { this.key3 = key3; }
}

我想处理这个对象的列表,并用逗号分隔所有值和所有键。

List<MyObject> objectList = myObjectList;
String keys = objectList.stream().collect(Collectors.joining(", ","(", ")"));
String values = Collections.nCopies(objectList.size(), "?").stream().collect(Collectors.joining(", ", " (", ")"));

有谁知道这是否可能? 或者我应该尝试其他选择?

对于Stream<MyObject>每个元素,您可以通过Stream#flatMapStream.of创建其键**的Stream<String> *:

String keys = objectList
        .stream()
        .flatMap(o -> Stream.of(o.getKey1(), o.getKey2(), o.getKey3()).map(Object::toString))
        .collect(Collectors.joining(",", "(", ")"));

*由于某些字段(键)不是String类型,因此可以通过Stream#map(Object::toString)Stream<Object>转换为Stream<String>

**如果您有吸气剂值,则可以使用相同值。


更进一步,我将为类定义一个提取器ListFunction<MyObject, String> )(可以有一个静态方法来返回此列表):

public static List<Function<MyObject, String>> getExtractors() {
    return Arrays.asList(
            o -> String.valueOf(o.getKey1()),
            MyObject::getKey2,
            MyObject::getKey3
    );
}

.flatMap(o -> getExtractors().stream().map(extractor -> extractor.apply(o)))

使用 Java 8

[英]Getting the stream object in Collectors toMap method using Method References in Java 8

如何转换 ArrayList<string> 至 ArrayList<object> using.collect(Collectors.toList() 在 Java stream<div id="text_translate"><p> 如何在 Java stream 中使用.collect(Collectors.toList()将ArrayList&lt;String&gt;转换为ArrayList&lt;Object&gt;</p><p> 之前我用过</p><pre>CommonList = detailUtils.SelectIDValueGetterObservable(getActivity()).stream().forEach(i -&gt; CommonList.add(new foo(i));`</pre><p> 但是我遇到了这些<strong>副作用</strong></p><p> <a href="https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html" rel="nofollow noreferrer">https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html</a></p><p> 这建议.collect(Collectors.toList()</p><p> 我们该怎么做</p></div></object></string>

[英]How can I convert ArrayList<String> to ArrayList<Object> using .collect(Collectors.toList() in Java stream

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM