我正在使用这段代码将一个Set转换为一个List:

Map<String, List<String>> mainMap = new HashMap<>();

for (int i=0; i < something.size(); i++) {
  Set<String> set = getSet(...); //returns different result each time
  List<String> listOfNames = new ArrayList<>(set);
  mainMap.put(differentKeyName, listOfNames);
}

我希望避免在循环的每次迭代中创建一个新列表。这可能吗?


当前回答

最简单的解决方案

我想要一种非常快速的方法将我的set转换为List并返回它,所以在一行中我做到了

 return new ArrayList<Long>(mySetVariable);

其他回答

最简单的解决方案

我想要一种非常快速的方法将我的set转换为List并返回它,所以在一行中我做到了

 return new ArrayList<Long>(mySetVariable);

使用构造函数转换它:

List<?> list = new ArrayList<>(set);

最近我发现了这个:

ArrayList<T> yourList = Collections.list(Collections.enumeration(yourSet<T>));

我会这样做:

Map<String, Collection> mainMap = new HashMap<String, Collection>();

for(int i=0; i<something.size(); i++){
  Set set = getSet(...); //return different result each time
  mainMap.put(differentKeyName,set);
}

我创建一个简单的静态方法:

public static <U> List<U> convertSetToList(Set<U> set)
{
    return new ArrayList<U>(set);
}

... 或者如果你想设置列表的类型,你可以使用:

public static <U, L extends List<U>> List<U> convertSetToList(Set<U> set, Class<L> clazz) throws InstantiationException, IllegalAccessException
{
    L list = clazz.newInstance();
    list.addAll(set);
    return list;
}