2013-01-01 55 views
-2

可以解釋如何停止重複names.if任何重複的名稱給我然後我需要顯示適當的錯誤消息,如「名稱已存在」.so應用程序包括以下類merchant.java,MerchantDao.java,MerchantImpl.java class.so我需要在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; 
    } 
+0

您是否有所有商家的列表? – elyashiv

+0

是的,我有數據庫中的商家名單。如果我通過merchant.jsp頁面給出已經退出的mechantName,那麼它將顯示「商家名稱已經存在」請povide邏輯。 – user1782621

+0

我需要實現類似方法(checkduplicate())在MerchantImpl即需要以比較數據的基礎上的名字輸入的信息,如果存在,那麼表明在該適當的錯誤消息發送到瀏覽器,以便提供邏輯 – user1782621

回答

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. 
     } 
    } 
} 
+0

我的申請方含merchat.java,MerchantDao .java,MerchantImpl.java類,因此我需要從mucontroller類(spring-mvc)調用Merchant Impl類的checkDuplicates()以便提供code.i需要將表單屬性(merchantName)與數據庫中的merchantTable進行比較 – user1782621

+0

I由於性能方面的原因,它仍然會保留在內存中,並且在應用程序從已經添加到數據庫中的名稱開始時填充它。 – Kamil

+0

提供邏輯克利 – user1782621

0

存儲集名稱。不幸的是,你沒有提供顯示如何獲得新名稱的代碼,但以下代碼示例應該可以幫助你:

//定義 Set names = new HashSet();在代碼

//其他地方,你得到新的名字: 如果(names.contains(名稱)){// 打印錯誤消息 } names.add(名); //添加新的名稱。

2

您可以覆蓋的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; 
} 

和商業類的方法,那麼,商家的對象存儲在一個集收藏(更快的查找)。添加適當的檢查來查看新的商戶名稱是否已經存在於設置中。

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

現在檢查

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

P.S:我只想建議重寫與商家名稱的哈希碼哈希碼,你必須保持爲客商唯一名稱的要求。

+1

在這種情況下,你可能也覆蓋'.equals()' – fge

+0

請提供邏輯公衆詮釋checkDuplicate(){}。這個方法從所謂myController的提供class.so這裏的邏輯 – user1782621

+0

不要指望別人只要給你在SO中實現邏輯。你有超過5個答案。試試任何一個。 – Jayamohan

0

在數據庫中搜索輸入名稱(如果存在),則返回錯誤,否則插入數據庫。

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

實際代碼取決於您用於維護數據庫的數據結構。

if(name_list.contains(name)) 
error 
else 
name_list.add(name);