【问题标题】:Converting List<Object> to String returns empty results将 List<Object> 转换为 String 返回空结果
【发布时间】:2016-10-12 02:38:54
【问题描述】:

免责声明:我使用this Post,作为List&lt;Object&gt;List&lt;String&gt;this Post 的Java List&lt;String&gt; 字符串到JavaScript 数组的参考。

我有List&lt;Seat&gt;,我想以逗号分隔的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

【问题讨论】:

  • 一切都是正确的......除了toJavascriptArray(List&lt;Seat&gt; listSeats)方法中的事实......你没有在其中附加字符串......只是一个逗号
  • 所以在里面添加这个...sb.append(arr[i]);

标签: java list


【解决方案1】:

另一个选项,如果您使用的是 Java 8,则使用 StringJoiner:

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

【讨论】:

  • 感谢您的宝贵时间,抱歉,我使用的是 java 7。
【解决方案2】:

你没有附加迭代元素,见下文

        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)

为了得到预期的结果

【讨论】:

  • 好吧,我错过了added问题已解决。
【解决方案3】:

您忘记将数组元素附加到字符串缓冲区! 添加

sb.append(arr[i]);

在你准备字符串缓冲区的循环内,一切正常

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    • 2018-12-27
    • 1970-01-01
    相关资源
    最近更新 更多