How to convert java list of objects to 2D array?

2019-09-25 07:29发布

Is there an easy way to use lambda in java 8 to convert

from this object:

        "coords" : [ {
    "x" : -73.72573187081096,
            "y" : 40.71033050649526
}, {
    "x" : -73.724263,
            "y" : 40.709908}
]

to this object:

    "coordinates":[
    [
    [
   -73.72573187081096,
            40.71033050649526
    ],
    [
    -73.724263,
            40.709908
    ]]

I try to use transform() function but how can i transform from list to 2D array ?

here is my try, but i got an error:

coordinates =

        Lists.newArrayList(
                Lists.newArrayList(
                        Lists.newArrayList(
                                coords.stream()
                                        .map( item -> Lists.newArrayList(ImmutableList.of(item.x, item.y))))));

标签: java lambda
1条回答
看我几分像从前
2楼-- · 2019-09-25 08:06

Not 100% sure what you are asking, but I'll give it a try. Assuming you have a list of Points...

List<Point2D> points = Arrays.asList(new Point2D.Double(12., 34.),
                                     new Point2D.Double(56., 78.));

... you can turn that list into a 2D-array like this:

double[][] array = points.stream()
        .map(p -> new double[] {p.getX(), p.getY()})
        .toArray(double[][]::new);

... or into a nested list like this:

List<List<Double>> list = points.stream()
        .map(p -> Arrays.asList(p.getX(), p.getY()))
        .collect(Collectors.toList());

In both cases, the result looks like this [[12.0, 34.0], [56.0, 78.0]], as an array or a list, respectively.

查看更多
登录 后发表回答