Mapインタフェースとequals書き換え
21316 ワード
Mapインタフェースとequalsの書き換え1.Mapインタフェース 2.equalsとMapアプリケーション を書き換える
一.Mapインタフェース
Mapインタフェースは、ペアを構成するキー(key)--値(value)オブジェクトを格納し、keyからvalueへのマッピングを提供し、keyによって取得する.Mapインタフェースのkeyは秩序を必要とせず,繰返しは許されない.valueも同様に秩序を要求しないが、重複を許可する.Mapインタフェースの一般的な方法
方法
説明
Object put(Object key,Object value)
相互に関連付けられたkey,valueをセットに入れ、mapインタフェースにkeyに対応するvalueがすでに含まれている場合は、古い値が置き換えられます.
remove(Object key)
指定したkeyに関連するマッピングを削除し、変更キーに関連する古いvalueを返します.キーが関連付けられていない場合はnullを返します
Object get(Object key)
keyに関連するvalueを取得します.keyがnull以外の値を関連付けない場合はnullを返します.
bollean containsKey(Object key)
集合中にkeyが存在するか否かを判断する
bollean isEmpty()
集合に要素が存在するかどうかを判断する
void clear()
コレクション内のすべての要素を明確にする
int size()
コレクション内の要素の数を返します.
Set keySet
すべてのkeyのコレクションを取得
Collection values()
すべてのvalueコレクションを取得
二.equalsとMapアプリケーションの書き換え
図書類Bookを定義し、属性アカウントid、本名name、著者author、価格priceを持ち、図書オブジェクトの作成時にコンストラクタによる作成を要求し、一度に4つの属性をすべて付与します.1)口座属性はint型、名称はString型、著者はString型、価格はdoubleで、合理的にパッケージしてください.2)Bookクラスでは,toStringメソッドを追加し,図書情報文字列を返すことを要求し,tを用いて各情報を区切る3)図書館Libraryクラスを定義することを要求する.図書館クラスに複数の図書を保存するための集合を追加する4)図書館クラスに図書を追加することが要求される5)図書館クラスに追加されたすべての図書を表示することが要求される6)重複する図書を追加することは許されない(アカウントidと本名nameが同じであれば2冊の本は同じと考える)(equalsメソッドを書き換える)bookクラス
Libraryクラス
一.Mapインタフェース
Mapインタフェースは、ペアを構成するキー(key)--値(value)オブジェクトを格納し、keyからvalueへのマッピングを提供し、keyによって取得する.Mapインタフェースのkeyは秩序を必要とせず,繰返しは許されない.valueも同様に秩序を要求しないが、重複を許可する.Mapインタフェースの一般的な方法
方法
説明
Object put(Object key,Object value)
相互に関連付けられたkey,valueをセットに入れ、mapインタフェースにkeyに対応するvalueがすでに含まれている場合は、古い値が置き換えられます.
remove(Object key)
指定したkeyに関連するマッピングを削除し、変更キーに関連する古いvalueを返します.キーが関連付けられていない場合はnullを返します
Object get(Object key)
keyに関連するvalueを取得します.keyがnull以外の値を関連付けない場合はnullを返します.
bollean containsKey(Object key)
集合中にkeyが存在するか否かを判断する
bollean isEmpty()
集合に要素が存在するかどうかを判断する
void clear()
コレクション内のすべての要素を明確にする
int size()
コレクション内の要素の数を返します.
Set keySet
すべてのkeyのコレクションを取得
Collection values()
すべてのvalueコレクションを取得
二.equalsとMapアプリケーションの書き換え
図書類Bookを定義し、属性アカウントid、本名name、著者author、価格priceを持ち、図書オブジェクトの作成時にコンストラクタによる作成を要求し、一度に4つの属性をすべて付与します.1)口座属性はint型、名称はString型、著者はString型、価格はdoubleで、合理的にパッケージしてください.2)Bookクラスでは,toStringメソッドを追加し,図書情報文字列を返すことを要求し,tを用いて各情報を区切る3)図書館Libraryクラスを定義することを要求する.図書館クラスに複数の図書を保存するための集合を追加する4)図書館クラスに図書を追加することが要求される5)図書館クラスに追加されたすべての図書を表示することが要求される6)重複する図書を追加することは許されない(アカウントidと本名nameが同じであれば2冊の本は同じと考える)(equalsメソッドを書き換える)bookクラス
public class Book {
private int id;
private String name;
private String author;
private double price;
public Book() {
}
public Book(int id, String name, String author, double price) {
this.id = id;
this.name = name;
this.author = author;
this.price = price;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + '\'' +
", author='" + author + '\'' +
", price=" + price +
'}';
}
public boolean equals(Object obj){
if(obj instanceof Book){
Book book1=(Book)obj;
if(this.getId()==book1.getId()
&& this.getName().equals(book1.getName())){
return true;
}
}return false;
}
}
Libraryクラス
public class Library {
public static void main(String[] args) {
HashMap<Integer,Book> books = new HashMap();
String chose;
Scanner sc = new Scanner(System.in);
System.out.println(" ");
int keyId=1;
do {
System.out.println(" ");
Book b = new Book();
b.setId(sc.nextInt());
System.out.println(" ");
b.setName(sc.next());
System.out.println(" ");
b.setAuthor(sc.next());
System.out.println(" ");
b.setPrice(sc.nextDouble());
boolean flag = true;
Collection c=books.values();
for (Object o : c) {
if (o.equals(b)) {
System.out.println(" !");
flag = false;
break; }
}
if (flag) {
books.put(keyId++, b);
}
System.out.println(" (yes/no)");
chose = sc.next();
} while (chose.equals("yes"));
System.out.println(" !");
System.out.println(" , yes, no");
if (sc.next().equals("yes")) {
Set entry = books.entrySet();
for (Object o : entry) {
System.out.println(o);
}
}
else System.out.println(" ");
}
}