0

使用下面的代码,我试图获取由逗号分隔的列的值,columnsList String其中工作得很好-

final String columnsList = getColumns(service.getColumns());

private String getColumns(final List<String> columns) {
    List<String> copy = new ArrayList<String>(columns);
    Collections.shuffle(copy);

    int rNumber = random.nextInt(columns.size()) + 1;

    List<String> subList = copy.subList(0, rNumber);
    Collections.sort(subList, new Comparator<String>() {

        @Override
        public int compare(String o1, String o2) {
            return columns.indexOf(o1) < columns.indexOf(o2) ? -1 : 1;
        }
    });
    return StringUtils.join(subList, ",");
}

现在我需要以这种方式更改上述getColumns方法,而不是返回various columnsdelimited bycomma作为 String 它应该将我返回各种列作为List<String>. 所以我想到的一种方法是使用Arrays.asList-

final List<String> columnsList = Arrays.asList(getColumns(service.getColumns()).trim().split(","));

但我正在寻找其他方式,通过它我应该能够修改getColumns方法,以便它总是返回columns as a List of String而不是按照我目前使用Arrays.asList.

4

2 回答 2

1

这不是像返回子列表那样简单还是我错过了什么

private List<String> getColumns(final List<String> columns) {
    List<String> copy = new ArrayList<String>(columns);
    Collections.shuffle(copy);

    int rNumber = random.nextInt(columns.size()) + 1;

    List<String> subList = copy.subList(0, rNumber);
    Collections.sort(subList, new Comparator<String>() {

        @Override
        public int compare(String o1, String o2) {
            return columns.indexOf(o1) < columns.indexOf(o2) ? -1 : 1;
        }
    });
    return subList;
}
于 2013-03-02T23:54:19.790 回答
1

您应该能够通过替换return StringUtils.join(subList, ",");return subList;

于 2013-03-03T00:01:13.787 回答