簡體   English   中英

轉換清單 <Object> 到String返回空結果

[英]Converting List<Object> to String returns empty results

免責聲明 :我使用此Post ,作為List<Object>List<String>引用,以及此Post的Java List<String>字符串到JavaScript數組的引用。

我有List<Seat> ,我想用逗號分隔的String來獲取它的所有值,我以此方式嘗試過

import java.util.*;
import java.lang.*;

class Rextester
{  

    public Rextester(){
        Seat seat1 = new Seat();
        seat1.setSeatNumber(1);

        Seat seat2 = new Seat();
        seat2.setSeatNumber(2);

        Seat seat3 = new Seat();
        seat3.setSeatNumber(3);


        List<Seat> seatList = new ArrayList<Seat>();
        seatList.add(seat1);
        seatList.add(seat2);
        seatList.add(seat3);
        Utility util = new Utility();
        String stringSeats = util.toJavascriptArray(seatList);
        System.out.println("JavaScriptArray is " + stringSeats);
    }

    public static void main(String args[])
    {
        new Rextester();

    }



    private class Seat {

        private Integer seatNumber;        

        public Integer getSeatNumber() {
            return this.seatNumber;
        }

        public void setSeatNumber(Integer seatNumber) {
            this.seatNumber = seatNumber;
        }   
        public String toString() {
            return ""+ seatNumber;
        }
    }

    private class Utility {

        public String toJavascriptArray(List<Seat> listSeats){
            List<String> strings = new ArrayList<String>();
            for (Seat object : listSeats) {
                strings.add(object != null ? object.toString() : null);
            }
            String[] arr = new String[strings.size()];
            arr = strings.toArray(arr);
            StringBuffer sb = new StringBuffer();
            sb.append("[");
            for(int i=0; i<arr.length; i++){

                if(i+1 < arr.length){
                    sb.append(",");
                }
            }
            sb.append("]");
            return sb.toString();
        }
    }
}

但這給了我

JavaScriptArray is [,,]

在控制台上,我是否犯了一些錯誤? 在線工作代碼是http://rextester.com/NDUGT61105

您沒有附加迭代元素,請參見下文

        for (int i = 0; i < arr.length; i++) {
            sb.append(arr[i]); // add this
            if (i + 1 < arr.length) {
                sb.append(",");
            }
        }

看看ArraysListtoString實現

只需返回即可

strings.toString()

要么

Arrays.toString(arr)

獲得預期的結果

另一個選擇,如果您使用的是Java 8,則使用StringJoiner:

https://docs.oracle.com/javase/8/docs/api/java/util/StringJoiner.html

您忘記了將數組元素附加到字符串緩沖區!

sb.append(arr[i]);

在准備字符串緩沖區的循環內,一切正常

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM