【问题标题】:How to remove [ ] from a Collection in Java? [duplicate]如何从 Java 中的集合中删除 [ ]? [复制]
【发布时间】:2016-08-25 11:26:32
【问题描述】:

我在 Java 中有一个集合数组列表。

例如当我这样做时:

test 是集合。

System.out.println(test.getTester());

为什么我会得到以下结果: [詹姆斯邦德]

我只想要 jamesbond 但为什么他们也给我 [ ]?

【问题讨论】:

  • 因为 test.getTester() 返回的对象的 toString() 方法以这种方式打印对象。你没有贴出相关代码,所以不好说,大概是List或者Set吧。贴出相关代码。
  • 比较有趣的问题是:为什么要去掉括号?如果要打印列表,可以对其进行迭代并自己打印每个项目,而不是使用toString() 函数...
  • 请注意 test 不是集合。集合没有任何 getTester() 方法。贴出相关代码。

标签: java


【解决方案1】:

根据您的问题,假设您将 ArrayList of Strings 作为集合(因为它正在打印 [jamesbond])。

当您编写test.getTester() 时,java 会调用集合上的 toString() 方法,它会打印[] 之间的元素,并用逗号分隔。

您可以在集合上使用迭代器来打印单个元素。

    List<String> stringColl = Arrays.asList("jamesbond","danielocean");

    // Java 8 
    stringColl.forEach(stringElem -> System.out.println(stringElem));

    // Java 7 or below 
    for(String stringElem : stringColl){
        System.out.println(stringElem);
    }

【讨论】:

    【解决方案2】:

    只需用 substring 方法删除第一个和最后一个字符。

    String foo = test.getTester().toString();
    System.out.println(foo.substring(1, foo.length() - 1);
    

    注意:如果您尝试打印包含多个对象的数组,您会看到括号始终是第一个和最后一个字符,元素本身用逗号分隔。

    【讨论】:

      【解决方案3】:

      让一个字符串帮你解决这个问题并使用替换方法......

      示例:

      // if your list doesnt contain any element with the chars [ or ]
      String listNoBrackets = l.toString().replace("[", "").replace("]", "");
      System.out.println(listNoBrackets);
      
      // if your list contains at least 1 element with the chars [ or ]
      String listWithBrackets = l.toString().substring(1, l.toString().length() - 1);
      System.out.println(listWithBrackets);
      

      【讨论】:

      • 但是现在,一个条目将读取J[ames] Bond,而不是jamesbond,因此toString() 将打印[J[ames] Bond]...您的代码是做什么的? ;)
      • 那么他必须要么验证内容,要么执行我已经发布的 2 个选项之一......
      猜你喜欢
      • 2014-07-28
      • 2019-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 2019-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多