How do I print the contents of a List that contains a primitive type int object in it? Prefer answers to print this in one line. This is the code I have.
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))); }
This will give me [0,1] but I am looking for {[0,1],[2,3]}
Advertisement
Answer
The following one-liner can meet your requirement:
System.out.println( Arrays.deepToString(outputList.toArray()).replaceAll("(?<=^)\[", "{").replaceAll("\](?=$)", "}"));
It uses the positive lookbehind and positive lookahead regex assertions. Note that ^
is used for the start of the text and $
is used for the end of the text. The Arrays.deepToString(outputList.toArray())
gives us the string, [[0, 1], [2, 3]]
and this solution replaces [
at the start of this string and ]
at the end of this string, with {
and }
respectively.
In case, you want to remove all whitespace as well, you can chain one more replacement as follows:
System.out.println(Arrays.deepToString(outputList.toArray()).replaceAll("(?<=^)\[", "{") .replaceAll("\](?=$)", "}").replace(" ", ""));
Demo:
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(" ", "")); } }
Output:
{[0, 1], [2, 3]} {[0,1],[2,3]}