繁体   English   中英

我已经编写了该成员资格类,如何创建找到给成员的特定ID的方法?

[英]i Have written this membership class, how can i create a method to find a specific ID given to a member?

各位,到目前为止,这是我的会员资格类,我正在努力创建一种方法,该方法可以找到仅使用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;
    }


}

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

问题:

  • 您有不属于用户界面的代码。 我将从此类中删除所有System.out.println语句,而是将其保留在UI类或main方法中(如果非常简单)。
  • 特别是,getter方法应返回字段值,并且不应具有System.out.println语句
  • 我不确定为什么该类具有listOfMembers字段,或者为什么它只是一个字符串。 您可能想将“会员”和“会员资格”组合到一个类中-请勿这样做。
  • 我将其命名为Class Member因为它仅包含单个Member的信息。
  • 如果我需要一个Membership类,它将保存一个ArrayList<Member>
  • 并且它将具有一个public Member getMember(int id)方法,该方法将返回上面列表中共享传递给该方法的ID的项目。 一个简单的for循环遍历列表,比较id即可。

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

您可以让类处理所有成员,这是非常基本的实现。

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很陌生,从未接触过“地图”,您能解释一下它是什么吗?”

“一个将键映射到值的对象。一个映射不能包含重复的键;每个键最多可以映射一个值。” -来自: 文档

而不是像在Array那样使用直接索引:

  • ARR [5]; //在此处获得索引位置5的值。

或像List

  • list.get(5); //在这里,您将获得第五个元素,它可以(几乎)存储在内存中的任何位置,即4之前或之后,因为4知道5在哪里。

对于Map

  • map.get(5); //您将对象存储在5处,而Map可能没有3或4处。 您可以将任何Object存储为任何Object String是公用key另一个示例。

我建议使用Map并将id用作Map的键,并将Membership的对象存储为Value,从而也易于检索和存储。

与此类似,

 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());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM