【问题标题】:adding String array into ArrayList将字符串数组添加到 ArrayList
【发布时间】:2015-02-15 20:50:37
【问题描述】:

我想将ab 字符串数组附加到arrayList。但是 "1.0" 必须是 "1" 使用拆分。 Split 方法返回 String[] 所以 arrayList add 方法不能这样工作。 你能建议任何其他方法吗?

String[] a = {"1.0", "2", "3"};
String[] b = {"2.3", "1.0","1"};

ArrayList<String> arrayList = new ArrayList<String>();

arrayList.add(a[0].split("."));

【问题讨论】:

  • 预期输出是什么,不清楚
  • a[0].split(".")[0]
  • 只获取拆分数组的第一个元素
  • split()的参数是一个正则表达式,所以如果你想让你的分隔符是.,你必须把它转义成\\.
  • @Deniz 因为. 在java 中使用\\. 进行拆分,请参阅答案

标签: java arrays string split


【解决方案1】:
arrayList.add(a[0].split("\\.")[0]);

【讨论】:

  • Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
  • 已更正,错误的正则表达式。
  • 首先谢谢,我有这样的异常:线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 0
【解决方案2】:

应该如下

arrayList.add(a[0].split("\\.")[0]);

【讨论】:

    【解决方案3】:

    Split 方法返回一个数组。您必须访问他的位置才能获得该号码。

    arrayList.add(a[0].split("\\.")[0]);
    

    也可以使用子串方法:

    arrayList.add(a[0].substring(0, 1));
    

    【讨论】:

      【解决方案4】:

      像这样访问该数组的第一个元素:

      for (int i = 0; i < a.length; i++) {
          if (a[i].contains("."))
              arrayList.add(a[i].split("\\.")[0]);
          else
              arrayList.add(a[i]);
      }
      

      【讨论】:

      • Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
      【解决方案5】:

      为什么要拆分它?只需使用replaceAll(),它会更高效,因为它不会创建字符串数组。

      public static void main(String[] args) {
          String[] a = { "1.7", "2", "3" };
          List<String> arrayList = new ArrayList<String>();
          for (int i = 0; i < a.length; i++) {
      
              arrayList.add(a[i].replaceFirst("\\..*", "")); // escape the . (match it as a literal), then followed by anything any number of times.
          }
          System.out.println(arrayList);
      
      }
      
      O/P :
      [1, 2, 3]
      

      【讨论】:

        【解决方案6】:

        如果您使用 Java 8,

        String[] a = {"1.0", "2", "3"};
        
        List<String> list = Arrays.stream(a).map(s -> s.split("\\.")[0]).collect(Collectors.toList());
        
        // OR
        
        List<String> list2 = Arrays.stream(a).map(s -> {
          int dotIndex = s.indexOf(".");
          return dotIndex < 0 ? s : s.substring(0, dotIndex);
        }).collect(Collectors.toList());
        

        【讨论】:

          【解决方案7】:

          这对我来说工作正常:arrayList.add(a[0].split("\\.")[0]);

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-08-02
            • 2011-06-07
            • 1970-01-01
            • 2013-08-13
            • 1970-01-01
            • 1970-01-01
            • 2012-11-06
            相关资源
            最近更新 更多