-3

重複した名前を停止する方法を誰かが説明できますか。重複した名前がある場合は、「名前は既に存在します」などの適切なエラーメッセージを表示する必要があります。そのため、マーチャント名の重複を停止するロジックを含むメソッドを MerchantImpl.java クラスに実装する必要があります。

Merchat.java

public class Merchant
 {
 private String merchant Name;
etc
 } 

 MerchantImpl.java
  public class MerchantImpl
  {
need to define a method to prevent duplicate names;
     }
4

4 に答える 4

2

Merchant クラスの hashCode および equals メソッドをオーバーライドできます

@Override
public int hashCode() {
    return name.hashCode();
}

@Override
// This really depends on if you want to compare only objects or names too.
// The following compares names too.
public boolean equals(final Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    final Merchant other = (Merchant) obj;
    if (name == null) {
        if (other.name != null)
            return false;
    } else if (!name.equals(other.name))
        return false;
    return true;
}

次に、Merchant オブジェクトを Set コレクションに格納します (検索を高速化するため)。新しいマーチャントの名前がセットに既に存在するかどうかを確認するための適切なチェックを追加します。

Set<Merchant> merchants = new HashSet<>()
// Populated the merchants

今チェック

// if merchant names are unique
merchants.contains(newMerchantObj)

PS : マーチャントの一意の名前を維持する必要があるため、ハッシュコードをマーチャント名のハッシュコードでオーバーライドすることのみをお勧めします。

于 2013-01-01T14:02:18.833 に答える
0

ストア名をセットにします。残念ながら、新しい名前を取得する方法を示すコードは提供されていませんが、次のコード サンプルが役立ちます。

// 定義 セット名 = new HashSet();

// 新しい名前を取得するコード内の別の場所: if (names.contains(name)) { // エラー メッセージを出力する } names.add(name); // 新しい名前を追加します。

于 2013-01-01T14:01:33.873 に答える
0

存在する場合はデータベースで入力名を検索し、存在しない場合はエラーをデータベースに挿入します。

if(name exist in database)
error
else 
add name in database.

実際のコードは、データベースの維持に使用するデータ構造によって異なります。

if(name_list.contains(name))
error
else 
name_list.add(name);
于 2013-01-01T14:04:21.943 に答える