簡體   English   中英

單獨的集合類對象

[英]Separate Collection Class Object

我的項目涉及2個班級: Members & Society

目前,我在Society Class中編寫了一種方法“ removeMembers() ”,當給定特定的月份和年份時,它會刪除所有符合說明的成員。

但是,如何創建一個單獨的集合類對象,該對象將返回已刪除的成員?

任何幫助或建議,將不勝感激,我還將發布我的代碼為兩個類。

社會階層:

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;
    }
   }
}

會員等級:

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;
   }

您可以在removeMembers()方法中創建一個新列表,然后將已刪除的對象添加到列表中並返回它。 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