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 columns区切られたを返す代わりに、commaさまざまな列を。として返す必要がありList<String>ます。だから私がやろうと思った一つの方法は、これを使ってこういうことですArrays.asList-

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

しかし、私は、現在行っている方法でgetColumnsはなく、常に戻るようにメソッドを変更できる他の方法を探しています。columns as a List of StringArrays.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 に答える