セットのセットを反復処理するプログラムを作成しようとしています。以下のコード例では、 iter.next() が文字列のセットではなくオブジェクト型であるというエラーが表示されます。セットのセットを反復処理することで、他にもいくつかの不可解な問題が発生しています。助言がありますか?
Set<String> dogs= new HashSet<String>();
dogs.add("Irish Setter");
dogs.add("Poodle");
dogs.add("Pug");
dogs.add("Beagle");
Set<String> cats = new HashSet<String>();
cats.add("Himalayan");
cats.add("Persian");
Set<Set<String>> allAnimals = new HashSet<Set<String>>();
allAnimals.add(cats);
allAnimals.add(dogs);
Iterator iter = allAnimals.iterator();
System.out.println(allAnimals.size());
while (iter.hasNext())
{
System.out.println(iter.next().size());
}
同じセットアップ(ループを除く)の関連する質問。
以下のコード フラグメントでは、チルダを含む最終出力が生成されます。しかし、すべての動物を変更したくはありません。より大きなセット (allAnimals) に影響を与えずに拡張子を編集するにはどうすればよいですか。
for (Set<String> extension : allAnimals)
{
System.out.println("Set size: " + extension.size());
extension.add("~");
System.out.println(extension);
}
System.out.println(allAnimals);