首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 多態實戰:用 TreeSet 模擬用戶註冊登錄(含 compareTo 正確寫法)

     編輯:程式設計疑難解答

核心邏輯

  • TreeSet 依賴元素 Comparable 接口或外部 Comparator 維持有序、去重。
  • User 實現 Comparable<User>,compareTo 決定「相等」判準(此處:用戶名+密碼全等)。

關鍵修正:compareTo 正確實現

@Override
public int compareTo(User o) {
    int n = this.userName.compareTo(o.userName);
    if (n != 0) return n;
    return this.passWord.compareTo(o.passWord);
}
// 返回 0 表示「相等」,TreeSet 視為重複元素不再添加

完整流程

  1. 註冊:set.add(new User(name, pwd)) → 返回 true 表示成功,false 表示用戶名已存在(因 compareTo 相等)。
  2. 登錄:set.contains(new User(inputName, inputPwd)) → true 登錄成功。

避坑指南

  • compareTo 必須與 equals 一致:compareTo==0 ⇔ equals==true。
  • 字符串比較用 String.compareTo,不可 用 == 或 hashCode。
  • 若需「用戶名唯一、密碼可改」,應拆分:Set<String> userNames + Map<String, String> pwdMap,勿濫用 TreeSet。

掌握 compareTo 正確寫法,TreeSet 即可成為輕量級「用戶存儲+去重+查找」組件。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved