В Java есть ли более оптимизированный способ объединить несколько JSONArrays, кроме повторения и вставки отдельных элементов?

#java

#java

Вопрос:

В настоящее время у меня есть несколько отдельных JSONArrays, которые я хотел бы объединить в один JSONArray. Я попытался найти некоторые ответы, и все, что я смог найти, это повторить массив и добавить отдельные элементы в новый массив.

Я хотел бы знать, есть ли более оптимизированный способ сделать это, поскольку у меня может быть большое количество JSONArrays.

Я попытался найти некоторые ответы, и все, что я смог найти, это повторить массив и добавить отдельные элементы в новый массив.

Рассмотрим приведенный ниже пример кода.

 JSONArray arr1 = [
    {
        "id" : 123,
        "name" : aaa
    },
    {
        "id" : 456,
        "name" : bbb
    }
];

JSONArray arr2 = [
    {
        "id" : 12,
        "name" : ccc
    },
    {
        "id" : 555,
        "name" : ddd
    },
    {
        "id" : 7986,
        "name" : eee
    }
];
  

Есть ли способ объединить их и получить единый JSONArray, как указано ниже.

 JSONArray merged = [
    {
        "id" : 123,
        "name" : aaa
    },
    {
        "id" : 456,
        "name" : bbb
    },
    {
        "id" : 12,
        "name" : ccc
    },
    {
        "id" : 555,
        "name" : ddd
    },
    {
        "id" : 7986,
        "name" : eee
    }
];
  

Комментарии:

1. Первый вопрос: Какой JSONArray класс вы используете? Я думаю, что их по крайней мере два.

2. Вы могли бы использовать Arrays.stream() , Stream.flatMap() и Stream.toArray() . Не оптимизирован для памяти / процессора, но оптимизирован для удобства чтения человеком.

3. Как пишет @T.J.Crowder, существует android org.json.JSONArray и net.sf.json.JSONArray и, возможно, другие (не говоря уже о тех, которые пишутся как JSONArray …). Кроме того, между версиями каждой конкретной библиотеки обязательно должны быть различия. Ответ зависит от того, какую библиотеку вы используете.

4. Извините, что я забыл упомянуть об этом. Я использую org.json.JSONArray.