java将List元素显示为字符串

时间:2015-01-18 18:06:41

标签: java arrays list tostring

我正在关注Stream教程,但我不明白我需要做什么才能让List元素输出内容作为其中包含的数字。

  

鉴于两个数字列表,您将如何返回所有数字对?例如,给定列表[1,2,3]和列表[3,4],您应该返回[(1,3),(1,4),(2,3),(2,4),( 3,3),(3,4)]。为简单起见,您可以将一对表示为具有两个元素的数组。

我已经阅读了一些关于覆盖toString()的帖子,但我没有要覆盖的对象。我显然错过了关于'对的性质,是因为'对'是一个int [] []的列表?

package testcode;
import java.util.Arrays;
import java.util.List;
import static java.util.stream.Collectors.toList;

public class TestCode {

public TestCode(){
    testStream();
}

public static void main(String[] args) {
    TestCode tC = new TestCode();
}

public void testStream(){
    List<Integer> numbers1 = Arrays.asList(1,2,3);
    List<Integer> numbers2 = Arrays.asList(3,4);
    List<int[]> pairs = numbers1.stream()
            .flatMap(i -> numbers2.stream()
                    .map(j -> new int[]{i, j})
            )
            .collect(toList());
    pairs.forEach(System.out::println);
//I have also tried 
    //String a = Arrays.toString(pairs); // but no suitable method found.
    String list = pairs.toString();
    System.out.println("list = " + list);
//tried converting pairs element to a List<String> using concatenation to force it be a string.
    List<String> stringsList  = new ArrayList<String>(pairs.size()); 
    for (int i = 0 ; i < pairs.size() ; i++) {
        stringsList.add("" + pairs.get(i));   
    }
    stringsList.forEach(System.out::println);
// or   
    System.out.println(" ** test 2");
    String[] stringsList2  = new String[pairs.size()]; 
    for (int i = 0 ; i < pairs.size() ; i++) {
        stringsList2[i] = "" + pairs.get(i);
        System.out.println(stringsList2[i]);
    }
}

欢呼阅读。

2 个答案:

答案 0 :(得分:1)

Arrays.deepToString(Object[] a)应该完成你所需要的。

deepToString将以递归方式打印多维数组的元素。

实施例

<强>代码

import java.util.Arrays;
public class Test{
    public static void main(String[] args){
        int[][] test = {{1,2,3},{4,5,6},{7,8,9}};
        System.out.println(Arrays.deepToString(test));
    }
}

<强>输出

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

答案 1 :(得分:1)

只需使用嵌套的for循环遍历数组并连接已转换的字符串。

public static String test_method() {
    int[] array1 = {1, 2, 3};
    int[] array2 = {3, 4};

    String string = "";

    for (int i: array1) {
        for (int j: array2) {
            String sub = "(" + String.valueOf(i) + ", " 
                             + String.valueOf(j) + ") ";
            string += sub;
        }
    }

    return string;
}