2

我正在阅读 solr 的 dataimporthandler 组件的源代码。我遇到一个问题

  private List<String> readBySplit(String splitBy, String value) {
    String[] vals = value.split(splitBy);
    List<String> l = new ArrayList<String>();
    l.addAll(Arrays.asList(vals));
    return l;
  }

↑ 清单 1(来自 RegexTransformer 类的方法)

  private List<String> readBySplit(String splitBy, String value) {
    String[] vals = value.split(splitBy);
    return Arrays.asList(vals);
  }

↑ 清单2(我觉得上面的方法应该是)

谁能告诉我以上两个代码清单之间的显着区别是什么?谢谢。

4

3 回答 3

7

Arrays.asList() Returns a fixed-size list backed by the specified array.

那来自javadoc。所以如果你想要一个动态大小的列表,你需要第一个代码。

于 2013-04-12T06:35:38.037 回答
2

Arrays.asList()返回固定大小的列表,它是未修改的列表。您不能对其执行添加/删除操作,这样做会抛出Exception UnsupportedOperationException.

因此,如果您想对列表进行一些操作,您的第一种方法是合适的

于 2013-04-12T06:43:36.063 回答
0

您无法在代码 2 返回的列表中添加任何内容,因为它返回固定大小的列表。您将获得“java.lang.UnsupportedOperationException”,但您可以通过代码 1 在列表返回中添加。

于 2013-04-12T06:43:59.457 回答