有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我已经编写了这个成员类,如何创建一个方法来查找给定给成员的特定ID?

伙计们,到目前为止,这是我的会员类,我正在努力创建一个方法来查找我使用uniqueId查找器提供的完整会员详细信息。请帮忙

public class Membership {

    private String FirstName;
    private String LastName;
    private int memberId;
    private String listOfMembers;
    private int uniqueId;
    private long phoneNumber;



    public Membership(String FirstName, String LastName, int uniqueId,
    long phoneNumber)
    {


       this.uniqueId = uniqueId;
       this.FirstName = FirstName;
       this.LastName = LastName;
       this.phoneNumber = phoneNumber;
    }


    public String getMember()
    {
        return FirstName + LastName;
    }
    public String getlistOfMembers()
    {
        return (FirstName + LastName);
    }
    public int getId()
    {
      return uniqueId;
    }

    public void MemberId (int Id)
    {
        System.out.println("Id" + Id);
    }

    public String getMemberDetails ()
    {
        System.out.println("Member Id: " + uniqueId);
        System.out.println("first name:  " + FirstName);
        System.out.println("LastName:  " + LastName);
        System.out.println("Member phone number:  " + phoneNumber);
        return listOfMembers;
    }


}

这就是我到目前为止所做的


共 (3) 个答案

  1. # 1 楼答案

    问题:

    • 用户界面代码不属于您。我将从这个类中删除所有System.out.println语句,并将其保留在UI类或main方法中(如果非常简单的话)
    • 特别是,getter方法应该返回字段值,并且不应该有System.out.println语句
    • 我不知道为什么这个类有一个listOfMembers字段,或者为什么它只是一个字符串。您似乎试图在一个类中将成员和成员组合在一起,但不要这样做
    • 我将这个类命名为Member,因为它只包含单个成员的信息
    • 如果我需要一个成员类,它将持有一个ArrayList<Member>
    • 它将有一个public Member getMember(int id)方法,该方法将返回上面列表中共享传递给该方法的id的项。一个简单的for循环遍历列表,比较id就足够了
  2. # 2 楼答案

    用一个例子来补充气垫船的答案

    您的类处理所有成员,这是它的基本实现

    public class Membership {
        private final Map<Integer, Member> members = new HashMap<>();
    
        public void addMember (Integer uniqueId, Member member) {
            members.put (uniqueId, member);
        }
    
        public void getMember (Integer uniqueId) {
            return members.get (uniqueId);
        }
    
        ...
    }
    

    然后Member本身就是这样,可以根据需要添加更多字段

    public class Member {
        private String firstName;
        private String lastName;
    
        public Member (String firstName, String lastName) {
            this.firstName = firstName;
            this.lastName = lastName;
        }
    
        public String getFirstName () {
            return firstName;
        }
    
        ...
    }
    

    这是OOP中一个非常基本但功能强大的特性

    再次看到气垫船的答案,因为它提供了所有的细节。如果他们要编辑/删除,我会更新这个

    映射与列表

    一件小事是,我反对使用ArrayList<E>来存储Member。如果在实现中添加可以删除用户的uniqueId将从一个用户转移到另一个用户。相反,我会确保您没有添加到现有用户

    如果你想保持它的简单性并开始使用,ArrayList<E>是有效的,你要知道你可能在功能中遇到的问题,一个uniqueId不一定与一个Member联系在一起

    “我对java很陌生,从来没有见过“地图”,你能解释一下它是什么吗?”

    “将键映射到值的对象。映射不能包含重复的键;每个键最多可以映射到一个值。”-发件人:Documentation

    不要像在Array中那样使用直接索引:

    • arr[5];//这里是索引位置5处的值

    或者像List

    • 名单。得到(5);//这里是第五个元素,它可以(几乎)存储在内存中的任何位置,在4之前或之后,都不重要,因为4知道5在哪里

    对于Map而言:

    • 地图。得到(5);//如果将对象存储在5,则Map中可能没有3或4。您可以将任何Object存储为任何内容。String是公共key的另一个示例
  3. # 3 楼答案

    我建议使用Map和id作为Map的键,并将成员对象存储为值,从而也便于检索和存储

    类似这样的东西,

     Map<Integer,Membership> map = new HashMap<Integer,Membership>();
        Membership m = new Membership("First", "LastName", 1,1234567890);
        map.put(m.getId(), m);
    

    要按id获取成员

     System.out.println(map.get(id).getMemberDetails());