【问题标题】:Best way to convert ArrayList to string [duplicate]将ArrayList转换为字符串的最佳方法[重复]
【发布时间】:2017-11-08 07:00:20
【问题描述】:

我有一个场景,如果用户从下拉列表中选择任何选项,那么该值将作为ArrayList 发送到服务器。如果用户没有选择任何东西,那么默认值将作为字符串发送到服务器。在java中,我必须将值转换为字符串(如果我得到ArrayList,如果我得到字符串,我必须将其转换为字符串,我必须按原样存储。用最少的代码来做到这一点的最佳方法是什么?

我正在尝试以下代码:

String encoding =  myMap.get("encoding").toString();

encoding = encoding.replaceAll("\\[\\]", ""); \\removing brackets

【问题讨论】:

  • 既然提到了服务器,就用简单通用的语法,JSON
  • 选项下拉数据的结构是什么
  • 我做的对吗?
  • encoding.replaceAll("\[\]", "") 将仅在括号相邻时替换括号,即“[]”。尝试 encoding.replaceAll("\[", "").replaceAll("\]", "")。但是,如果您的选项包含“[”和/或“]”,则结果将不符合预期。
  • 我将数据作为“abc”(字符串)有时作为 xyz(arraylist)在 arraylist 中只有一个元素

标签: java string arraylist


【解决方案1】:

使用[\\[\\]],而不是您当前使用的正则表达式。

List<Integer> list = Arrays.asList(1,2,3,4,5);
String s = list.toString().replaceAll("[\\[\\]]", "");
System.out.println(s);  

或者你可以使用substring,点赞

String s = list.toString().substring(1, list.toString().length()-1);

【讨论】:

  • 有没有最好的处理方法。而不是将arraylist转换为字符串,然后删除大括号。
  • @ramya 你也可以使用子字符串,这可能会更快,但大多数时候,它不会有任何区别。
  • Arraylist 总是只有一个元素
  • @ramya 那么你可以做list.get(0)
  • 我正在进入地图,地图的值为arraylist String encoding = myMap.get("encoding").toString();
【解决方案2】:

我认为您需要检查转换为字符串的对象是否为数组,因为它们转换为字符串的方式不同:

public String listToString(List<Object> list) {
        StringBuilder sb = new StringBuilder();

        for (Object object : list) {
            if (object != null) {
                if (object.getClass().isArray()) {
                    sb.append(Arrays.toString((Object[]) object));
                } else {
                    sb.append(object.toString());
                }
            }
        }
        return sb.toString();
    }

【讨论】:

    【解决方案3】:

    你永远不应该依赖像list.toString().replaceAll("[\\[\\]]", "") 这样的东西,因为它们只是列表的 toString 方法的一个特定实现,并且可以随时更改使你的代码崩溃......

    从 java8 开始使用 join

    List<Object> olist = Arrays.asList(1, 2, 3, 4, 5);
    List<String> sList = olist.stream().map(String::valueOf).collect(Collectors.toList());
    String results = String.join(",", sList);
    System.out.println(results);
    

    【讨论】:

    • 我有一张地图,地图的值可以是只有一个元素的 arralylist,也可以是一个字符串。我现在正在做的是从地图中获取值(它可能是带有一个元素或字符串的数组列表)并使用 Tostring 将其转换为字符串,然后删除括号 String encoding = myMap.get("encoding").toString() ;
    猜你喜欢
    • 1970-01-01
    • 2010-10-10
    • 2019-10-24
    • 2014-06-21
    • 2018-05-28
    • 2017-04-10
    • 2012-01-15
    • 2011-12-27
    相关资源
    最近更新 更多