我有以下代碼。我想要做的是使用排列函數填充ArrayList,將該數組保存在HashMap中,並重新開始整個過程(基本上使用ArrayList爲每個鍵填充HashMap)。我發佈了下面的代碼,但它不起作用。我認爲這是因爲它存儲了與我已經聲明的列表相同的引用,而不是製作它的副本。我是C磨砂和Java新手,所以任何幫助表示讚賞!在HashMap中存儲ArrayList
public class Anagrams
{
public static HashMap<String, ArrayList<String>> permutacii = new HashMap<String, ArrayList<String>>();
public static ArrayList<String> tempList = new ArrayList<String>();
private static void permutation(String prefix, String str)
{
int n = str.length();
if (n == 0)
tempList.add(prefix);
else
{
for (int i = 0; i < n; i++)
permutation(prefix + str.charAt(i),
str.substring(0, i) + str.substring(i+1));
}
}
public static void main(String[] args) {
findAll(System.in);
}
public static void findAll(InputStream inputStream)
{
Scanner scanner = new Scanner(inputStream);
while(scanner.hasNextLine())
{
String line = scanner.nextLine();
permutation("", line);
permutacii.put(line, tempList);
tempList.clear();
}
}
}
所有列表在HashMap中都是空的。 – Hydroxis
您需要在將地圖放入地圖後每次初始化一個新的'ArrayList'。 – user1803551