Javaでメソッドを呼び出そうとすると、マップが実行され、入力されたキーが検索され、オブジェクトのセットとその値がコレクションから取得されます。Java内のマップ内のセット内のオブジェクトにアクセスする
コンテキストの場合、これは2つのクラス、BookとAuthorを持つアプリケーションで、authorはtitleとyearPublishedという属性を持つ書籍のコレクションを保持します。
/**
* This method can be used to populate test data.
*/
public void createTestData()
{
Set<Book> collection = new HashSet<>();
Book book1 = new Book("Lord of the Flies",1954);
Book book2 = new Book("Another Lord of the Flies",1955);
Book book3 = new Book("Jamaica Inn",1936);
collection.add(book1);
collection.add(book2);
collection.add(book3);
bookSet.put("William Golding",collection);
Set<Book> collection2 = new HashSet<>();
Book book4 = new Book("The Wind in the Willows",1908);
Book book5 = new Book("Oliver Twist",1838);
collection2.add(book4);
collection2.add(book5);
bookSet.put("Kenneth Grahame",collection2);
}
:私は私の他のメソッドをテストすることができるように、私はまた、テストデータを移入するための方法を作成しました
クラス帳
public class Book
{
// instance variables
private String title;
private int yearPublished;
/**
* Constructor for objects of class Book
*/
public Book(String aTitle, int aYear)
{
this.title = aTitle;
this.yearPublished = aYear;
}
クラス著者
public class Author
{
// instance variables
private Map<String, Set<Book>> bookSet;
/**
* Constructor for objects of class Author
*/
public Author()
{
bookSet = new HashMap<>();
}
:以下のクラス情報
私が必要とするのは、引数をとらず、マップを繰り返して、櫛をプリントアウトするメソッドですinationマップキー+書籍情報(書籍タイトルとこれまで
をyearPublished、私は次のように書かれている:
/**
* Prints out to the standard output the authors currently in the system and all the books written
* by them, together with the year it was published.
*/
public void printMap()
{
for (String key : bookSet.keySet())
{
System.out.println(key + " " + bookSet.get(key));
}
}
ただし、出力はかなり奇妙です:
ウィリアム・ゴールディング[ブック@ 4f196e15 @ e8a4d45、ブック、ブックの@ 69f8d3cd] 19d6f478 @ケネス グラハム[ブック、ブック@ 6f4bff88]
私はARを得ることができる方法上の任意のアイデアその上にound?
また、1つの引数(マップキー)とマップキー(作成者の名前)とそれらによって書き込まれたすべての書籍を標準出力に出力する書籍セットを取得する方法を考え出しています。ウィリアム・ゴールディングによって書かれた
example.printMapValue("William Golding");
冊です:
/** * Searches through the map for the key entered as argument. If the argument is a key in the map, prints * textual representation of its associated value, otherwise prints an output line announcing * that the key is not present. */ public void printMapValue(String aKey) { System.out.println("The books written by " + aKey + " are: " + bookSet.get(aKey)); }
結果は再び非常に奇妙です:[ブックの@ e8a4d45、ブック(タイトルとyearPublishedこれは私がこれまで持っているものです@ 4f196e15、>書籍@ 69f8d3cd]
誰かが私を助けてくれたら本当にありがたいです。
ありがとうございます。