0

IN ステートメント内で SQL クエリとして渡す文字列を作成しようとしています。

ArrayList<Object[]> arrayList = new ArrayList<Object[]>();

    List<String> strings = new ArrayList<>(arrayList .size());
    for (Object object : arrayList ) {
        strings.add(Objects.toString(object, null));
    }

    System.out.println("askldnlkasdn"+strings);

これは、実際の文字列ではなく、メモリの場所を出力します

askldnlkasdn[[Ljava.lang.Object;@7bb11784, [Ljava.lang.Object;@33a10788, [Ljava.lang.Object;@7006c658, [Ljava.lang.Object;@34033bd0, [Ljava.lang.Object;@47fd17e3, [Ljava.lang.Object;@7cdbc5d3, [Ljava.lang.Object;@3aa9e816, [Ljava.lang.Object;@17d99928, [Ljava.lang.Object;@3834d63f, [Ljava.lang.Object;@1ae369b7]

また、StringBuilder と StringUtils を使用してみました。しかし、物事はうまくいかないようです。

問題がどこにあるのかについての情報はありますか?

4

5 に答える 5

1

あなたが抱えている問題は、暗黙のうちに要素のtoString()メソッドを使用していることです。デフォルトでは、このメソッドは のクラスとアドレスを返します。リスト内で使用するすべてのクラスでメソッドをオーバーライドして、必要なものを返す必要があります。ObjectArrayListObjecttoString()

于 2016-08-11T10:18:03.100 に答える
0

これは役立つかもしれない新しいコードです。

// Data of Array of Object for test the Code
    Object[] a = new Object[1];
    a[0] = "Hello";
    Object[] b = new Object[1];
    b[0] = "Friend";
    Object[] c = new Object[1];
    c[0] = "This is";
    Object[] d = new Object[1];
    d[0] = "Just Test";

    // The Array List of objects and the data entry
    ArrayList<Object[]> arrayList = new ArrayList<Object[]>();
    arrayList.add(a);
    arrayList.add(b);
    arrayList.add(c);
    arrayList.add(d);

    // New List of strings
    List<String> strings = new ArrayList<>(arrayList .size());


    // The Process of adding the data from array list of objects to the strings
    for(int i = 0; i < arrayList.size(); i++){
        strings.add((String) arrayList.get(i)[0]);
    }

    // Just for print the data to console
    for(int i = 0 ; i < strings.size(); i++){
        System.out.println(strings.get(i));
    }

    System.out.println("askldnlkasdn "+strings.get(0));

問題が解決することを願っています。そうでない場合はお知らせください。複数の次元配列に使用できます。

于 2016-08-11T13:25:35.577 に答える