【问题标题】:ArrayList and toStringArrayList 和 toString
【发布时间】:2012-05-06 12:36:34
【问题描述】:

我想问一下,如何使用 ArrayList 来存储 toString()。我有一个类,最后有一个 toString,我必须将类中的 toString 存储到 ArrayList 中。

像这样:音乐名称、作者、发行年份、当前播放 字符串、字符串、整数、布尔值

【问题讨论】:

  • 我不确定我是否遵循...最后的 toString 是什么意思?你的意思是你在类文件的末尾声明了方法?您需要在此站点上尽可能具体,并经常发布代码以充分理解您的问题。也欢迎使用 StackOverFlow!
  • 你的代码在哪里,你已经尝试了什么?

标签: java collections arraylist tostring


【解决方案1】:

希望您在特定类的 toString() 方法中正确格式化文本,
使用

List<String> listDesired = new ArrayList<String>( 10 );
listDesired.add( myMusicDataClassInstance.toString() );

【讨论】:

  • 为什么要设置数组列表大小为10?
  • @luketorjussen:为什么不呢?零参数构造函数的作用相同,只是隐式的。
  • @home 如果它是隐含的,那为什么还要写呢?
  • @luketorjussen - 使用对象的构造函数没有任何问题。 10只是一个巧合。我找不到拒绝投票的理由。
  • @home,如果你知道你将拥有多少物品,我明白为什么有人会说出来,否则阅读 IMO 会有点混乱
【解决方案2】:

问题不清楚,但是如果您的对象已经定义了 toString() 方法,则不需要将它们单独存储在数组列表中。只需将对象添加到 arrayList 并执行 Collections.toString(yourList);

【讨论】:

    【解决方案3】:

    您可以使用"" + x 技巧以避免NullPointerException,以防x 为空:

    public List<String> musicToString(List<Music> musicList) {
      final List<String> strings = new ArrayList<String>();
      for (Music m : musicList) strings.add("" + m);
      return strings;
    }
    

    这是因为串联运算符+ 隐式调用所有引用类型操作数上的String.valueOf

    如果这是您的审美偏好,您也可以明确写 String.valueOf。它还具有绝对不实例化 StringBuilder 的边际优势(尽管编译器很有可能会避免这种情况,因为它可以看到空字符串文字)。

    【讨论】:

    • 你也可以使用 String.valueOf();代替串联。
    • 你应该使用 String.valueOf() 代替连接
    • 我为什么要使用它,@unbeli?我经常使用连接,因为它更短。除非我正在编写性能关键代码,否则有什么危害?你能详细说明吗?还是您只是想投反对票?
    • 因为与空字符串连接基本上是一种 hack。 String.valueOf 更容易阅读。 String.valueOf 直接表明你的意图。 String.valueOf 不创建 StringBuffer。
    • 公平地说,易于阅读的内容在很大程度上取决于上下文。如果您有一个始终使用""+m 的整个项目——我曾参与过这样的项目——那么它同时简洁、易读,并以最清晰的方式显示作者的意图。
    【解决方案4】:

    您应该覆盖该类的toString(),并在toString() 方法中定义将该字符串转换为ArrayList 对象的业务逻辑。

    【讨论】:

    • 这不是对方法的正确覆盖,因为toString() 总是返回String。您可以重载该方法,但在这种情况下我也看不到这样做的好处。
    【解决方案5】:
    List<String> listDesired = new ArrayList<String>( 10 );
    

    【讨论】:

      猜你喜欢
      • 2015-11-01
      • 2014-05-04
      • 1970-01-01
      • 1970-01-01
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 2016-08-03
      相关资源
      最近更新 更多