获取Randoms列作为字符串列表

时间:2013-03-02 23:47:08

标签: java string list

使用下面的代码,我试图获得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 columns分隔为comma作为字符串,它应该返回各个列作为{{ 1}}。所以我想做的一种方法是使用List<String> -

Arrays.asList

但是我正在寻找其他一些方法,我可以通过它来修改final List<String> columnsList = Arrays.asList(getColumns(service.getColumns()).trim().split(","));方法,使它始终返回getColumns,而不是像我目前使用{{1 }}

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

您应该可以通过将return StringUtils.join(subList, ",");替换为return subList;

来实现这一目标