提问人:rickygrimes 提问时间:10/9/2021 最后编辑:Arvind Kumar Avinashrickygrimes 更新时间:10/11/2021 访问量:290
Java 中的 int 数组列表
List of int array in Java
问:
如何打印包含原始类型 int 对象的 List 的内容?首选答案,将其打印在一行中。这是我拥有的代码。
public static void main(String[] args) {
List<int[]> outputList = new ArrayList<>();
int[] result = new int[] { 0, 1 };
int[] result2 = new int[] { 2, 3 };
outputList.add(result);
outputList.add(result2);
System.out.println(Arrays.toString(outputList.get(0)));
}
这将给我 [0,1],但我正在寻找 {[0,1],[2,3]}
答:
3赞
Saurabh Dhage
10/9/2021
#1
你可以通过使用类来做到这一点StringBuffer
public static void main(String[] args) {
List<int[]> outputList = new ArrayList<>();
int[] result = new int[]{0, 1};
int[] result2 = new int[]{2, 3};
outputList.add(result);
outputList.add(result2);
StringBuffer output=new StringBuffer();
for (int[] ints : outputList) output.append(Arrays.toString(ints)).append(",");
output.insert(0,"{");
output.replace(output.capacity()-2,output.capacity()-1,"}");
System.out.println(output);
}
输出:
{[0, 1],[2, 3]}
2赞
Stephen C
10/9/2021
#2
溶液
这个单行应该这样做:
System.out.println(list.stream().map(Arrays::toString)
.collect(Collectors.joining(", ", "{", "}")));
(为了便于阅读,我用行换行。
非解决方案
由于您希望将外部列表包含在中,因此我们不能在上面的解决方案中使用。同样,会给我们错误的输出。
{ ... }
List::toString
Stream
Arrays::deepToString
显然,这可以使用 修复,但这让我觉得很丑陋。最好首先使用正确的“封闭器”。(或更改要求!!
String::replace
)调用 proproduced using 将为您提供以下内容:
Arrays::toString()
int[][]
List::toArray
[[I@2a40cd94, [I@f4168b8]
...这甚至不接近正确。
Arrays::toString
对对象的调用,数组类不会重写实现。toString
int[]
Object::toString
Arrays::deepToString
解决了问题的这一方面。
3赞
Arvind Kumar Avinash
10/9/2021
#3
以下单行可以满足您的要求:
System.out.println(
Arrays.deepToString(outputList.toArray()).replaceAll("(?<=^)\\[", "{").replaceAll("\\](?=$)", "}"));
它使用正向后视和正前瞻正则表达式断言。请注意,它用于文本的开头和文本的结尾。为我们提供了字符串,此解决方案将该字符串的开头和字符串的末尾分别替换为 和 。^
$
Arrays.deepToString(outputList.toArray())
[[0, 1], [2, 3]]
[
]
{
}
如果您还想删除所有空格,则可以再链接一个替换项,如下所示:
System.out.println(Arrays.deepToString(outputList.toArray()).replaceAll("(?<=^)\\[", "{")
.replaceAll("\\](?=$)", "}").replace(" ", ""));
演示:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String args[]) {
List<int[]> outputList = new ArrayList<>();
int[] result = new int[] { 0, 1 };
int[] result2 = new int[] { 2, 3 };
outputList.add(result);
outputList.add(result2);
System.out.println(
Arrays.deepToString(outputList.toArray()).replaceAll("(?<=^)\\[", "{").replaceAll("\\](?=$)", "}"));
System.out.println(Arrays.deepToString(outputList.toArray()).replaceAll("(?<=^)\\[", "{")
.replaceAll("\\](?=$)", "}").replace(" ", ""));
}
}
输出:
{[0, 1], [2, 3]}
{[0,1],[2,3]}
评论
System.out.println(Arrays.toString(outputList.toArray()))
?