-3

任何人都可以解释如何停止重复名称。如果给出任何重复名称,那么我需要显示适当的错误消息,例如“名称已存在”。所以应用程序包含以下类 Merchant.java、MerchantDao.java、MerchantImpl.java 类。所以我需要在 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

将所有名称保存在集合中,并在给出新名称时检查该名称是否已经在集合中。代码可能看起来像这样(您可能不需要新类):

class NameChecker {
    Set<String> names = new HashSet<String>();

    public void addName(String name) {
        if (names.contains(name)) {
            //print message
        } else {
            names.add(name);
            // do what you have to with new names.
        }
    }
}
于 2013-01-01T14:01:03.907 回答
0

将名称存储在集合中。不幸的是,您没有提供显示如何获得新名称的代码,但以下代码示例应该对您有所帮助:

// 定义 Set names = 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 回答