java对象组合_java – 组合复合对象的列表

我有一个ArrayList(Result),其中Result对象都包含对Event对象的引用. ArrayList中可能有50个Result对象,但只有5个不同的Event对象.有没有办法循环ArrayList并将具有相同Event.getName()引用的结果组合在一起?

我想在“跳高”事件中分别对结果运行一个方法,然后仅在事件“跳远”等结果中运行.

我不会事先知道结果列表中的哪些事件是从用户输入创建的.

我知道如何在事件名称上对ArrayList进行排序,但我想更确切地按事件拆分列表并将它们存储在其他临时列表中(?)

来自Result类:

public Result(double result, int attemptNumber, Participant participant, Event event) {

this.result = result;

this.attemptNumber = attemptNumber;

this.participant = participant;

this.event = event;

}

来自Event类:

public Event (String eventName, int attemptsAllowed) {

this.eventName = eventName;

this.attemptsAllowed = attemptsAllowed;

}

public String getEventName() {

return eventName;

}

结果对象在名为allResults的ArrayList中未排序存储,这是第三个类中的一个方法,它根据输入eventName对allResults的副本(称为resultByEvent)进行排序和修剪,并且每个参与者仅保留最高结果:

public ArrayList resultsByEvent(String eventName) {

resultsByEvent.addAll(allResults);

for(int i = 0; i < resultsByEvent.size(); i++) {

Event event = resultsByEvent.get(i).getEvent();

if(!event.getEventName().equals(eventName)) {

resultsByEvent.remove(i);

}

}

Collections.sort(resultsByEvent, new EventLeaderboard());

for(int n = 0; n < resultsByEvent.size(); n++) {

for(int j = n + 1; j < resultsByEvent.size(); j++) {

Participant participant1 = resultsByEvent.get(n).getParticipant();

Participant participant2 = resultsByEvent.get(j).getParticipant();

if(participant1.getParticipantId() == participant2.getParticipantId()) {

resultsByEvent.remove(j);

j = j - 1;

}

}

}

return resultsByEvent;

}

以上是我想在原始结果列表中的所有事件上运行的内容.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值