java - 单独的集合类对象
问题描述
我的项目涉及 2 个类:Members & Society
.
目前我已经写了一个方法' removeMembers()
' 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;
}
}
}
会员等级:
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;
}
解决方案
您可以在方法中创建一个新的 ListremoveMembers()
并将已删除的对象添加到列表中并返回它。remove(Object o)
arraylist 中的方法将返回已删除的对象和剩余的方法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;
}
推荐阅读
- php - 如何修复无效字符的 github oauth 令牌:“__TOKEN__”?
- ios - 将 UILabel 文本对齐设置为中心在 iOS 中从阿拉伯语的英语语言环境切换不起作用
- sql - PL/SQL:使用 oracle 函数忽略 SQL 语句
- c# - Chrome 原生消息传递,与原生消息传递主机通信时出错
- javascript - 将多个/未知数量的变量传递给 JavaScript 一个参数?
- sql - SQL/PySpark:创建一个包含过去 n 天的行数的新列
- c# - 有时不出现保存文件对话框
- python - Python:使用谷歌 AIY 和谷歌 TextToSpeech 的问题
- java - 打破同步块?
- javascript - Redux Store 值变化很慢