简体   繁体   English

单独的集合类对象

[英]Separate Collection Class Object

My project involves 2 classes: Members & Society . 我的项目涉及2个班级: Members & Society

Currently I have written a method ' removeMembers() ' in the Society Class that when given a particular month and year, it removes all the members who fit the description. 目前,我在Society Class中编写了一种方法“ removeMembers() ”,当给定特定的月份和年份时,它会删除所有符合说明的成员。

However, how would I create a separate collection class object which returns the deleted members? 但是,如何创建一个单独的集合类对象,该对象将返回已删除的成员?

Any help or advice on this will be appreciated, I will also post my code for both classes. 任何帮助或建议,将不胜感激,我还将发布我的代码为两个类。

Society Class: 社会阶层:

public class Society
{
   private ArrayList<Member> myMembers;
   private Member member;
   private String societyName;
   private boolean feesPaid;


   public Society(String society)
   {
      myMembers = new ArrayList<Member>();
      this.societyName = society;
   }

   public String getSocietyName()
   {
     return societyName;  
   }

   public void join(Member member)
   {
      myMembers.add(member);
   }

   public void showMember(int listPosition)
   {
      Member member;
      if( listPosition < myMembers.size() )
      {
         member = myMembers.get(listPosition);
         System.out.println("Position " + listPosition  + ": " + member);
      }
   }

   public void joinedInMonth(int joined) {
        if (joined > 12 || joined < 1) {
            System.out.println("Invalid number. Please enter a number from 1 - 12.");       
       }
       long joinedMonth = myMembers.stream().filter(m -> m.getMonth() == joined).count();
       System.out.printf("%d members have joined this society on month %d%n", joinedMonth, joined);

   }

   public int numberOfMembers()
   {
      return myMembers.size();
   }

   public void printDetails()
   {
       for (Member m : myMembers) {
      System.out.println("Society Name: " + societyName);
      System.out.println(m.toString());
      System.out.println("--------------------------");
     } 

   }

   public void removeMembers(int month, int year) {
    myMembers.removeIf(m -> m.getYear() == year && m.getMonth() == month);
   }

   public void payFees(Member member)
    {
      if (member.isFeesPaid()) {
        System.out.println("Fees has been paid");
        return;
    }
   }
}

Member Class: 会员等级:

public class Member
{

   private int month;
   private int year;
   private String name;
   /*private Society society;*/
   private List<Society> societies;
   private boolean feesPaid;
   public Member(String name, int month, int year /*Society society*/)
   {
      this.name  = name;
      this.month = month;
      this.year = year;
      this.societies = new ArrayList<>();
   }

   public void joinSociety(Society society)
   {
       societies.add(society);
    }

   public boolean isFeesPaid() {
    return feesPaid;
    }

   public int getYear()
   {
    return year;
   }

   public int getMonth()
   {
     return month;
   }

   public String getName()
   {
     return name;
   }

   public String toString()
   {
     return "Name: " + name + ", Month Joined: " + month + ", Year Joined: " + year;
   }

You can create a new List in removeMembers() method and add the removed objects to list and return it. 您可以在removeMembers()方法中创建一个新列表,然后将已删除的对象添加到列表中并返回它。 remove(Object o) method in arraylist will return the removed object and remaining methods remove(int index) , removeIf(Predicate<? super E> filter) and removeRange(int fromIndex, int toIndex) will not return removed object arraylist中的remove(Object o)方法将返回移除的对象,其余方法remove(int index)removeIf(Predicate<? super E> filter)removeRange(int fromIndex, int toIndex)将不返回移除的对象

public List<Members> removeMembers(int month, int year) {
   List<Members> deletedMembers= new ArrayList<>();
    Iterator<Members> members = myMembers.iterator();
    while (members.hasNext()) {
        Member member = members.next();
        if (member.getYear()==year && member.getMonth()==month) {
           deletedMembers.add(members.remove());
        }
    }
    return deletedMembers;
}

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

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