当前位置: 首页 > 知识库问答 >
问题:

如何在Java中使用stream()方法将List转换为JSONArray的整数

章哲茂
2023-03-14

我试图找到最好的方法来转换列表的整数到JSONArray的org.json.JSONArray库API调用

鉴于

List<Integer> ids = new ArrayList<>();

ids.add(1);

ids.add(2);

ids.add(3);

需要JSONArray对象

JSONArray ids = [1,2,3]

在Java中使用stream()方法。

共有3个答案

璩慎之
2023-03-14

您可以将可变约简与collect()一起使用。

请注意,只有当您需要在此过程中过滤或更改一些值时,才可以合理使用流,否则这将是代码不必要的复杂性。

List<String> source = List.of("1", "2", "3");

JSONArray result =
    source.stream()
          .map(str -> str.concat(".0"))
          .collect(
              JSONArray::new,
              JSONArray::put,
              JSONArray::putAll);
    
System.out.println(result);

输出

["1.0","2.0","3.0"]
严开宇
2023-03-14

**朴素的解决方案:*朴素的解决方案是迭代给定的集合,并逐个复制整数数组中遇到的每个元素。

Set<Integer> set = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5));
Integer[] array = new Integer[set.size()];
 
int k = 0;
for (Integer i: set) {
    array[k++] = i;
}
 
System.out.println(Arrays.toString(array));

**使用Set。toArray()方法:**Set接口提供toArray()方法,该方法返回包含集合元素的对象数组。

Set<Integer> set = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5));
Object[] array = set.toArray();
System.out.println(Arrays.toString(array));
公良同
2023-03-14

通过使用JSONArray类的构造函数,无需使用流就可以轻松地完成这项工作,该类接受集合

List<Integer> ids = List.of(1, 2, 3);
JSONArray json = new JSONArray(ids);

如果出于某种原因必须使用流:

List<Integer> ids = List.of(1, 2, 3);
JSONArray json = new JSONArray();
ids.stream().forEach(json::put);
 类似资料:
  • 问题内容: 在我的Android项目中,我试图将收到的JSONArray转换为List。借助这个SO答案,我走得更远。我现在有以下代码: 不幸的是,它在最后一行抱怨Gson类型的fromJson(String,Type)方法不适用于参数(JSONArray,Type)。我真的不知道该怎么解决。 有人知道我该怎么解决吗? 问题答案: 如果您在此处看到答案,您会注意到该方法中的第一个参数是(json对

  • 我有列表: 如何转换列表 需要更换: 对象具有构造函数: 我试过这个: 但这对我不起作用。我得到错误: 我认为lambda参数是数组的点[],但不是。

  • 我从FireStore的一个字段中访问值,但它是一个列表形式,我需要将其转换为一个流

  • 我有我想分批处理的编号列表。

  • 问题内容: 如何转换成? 当然,除了循环地逐项执行之外,我对任何其他答案都感兴趣。但是,如果没有其他答案,我将选择一个作为最佳答案,以证明此功能不是Java的一部分。 问题答案: 没有捷径可转换为因为它不会处理拳击,只会创建你不想要的。你必须制作一个实用程序方法。

  • 问题内容: 将a转换为a 的最佳方法是什么?只是迭代所有值并将它们插入列表中,还是我忽略了某些内容? 问题答案: 假设: