У меня есть набор объектов Agent (суперкласс).
Объектами агента могут быть: 1) зараженный (расширяющий агент) и 2) здоровый (расширяющий агент).Пример ...
public class Healthy extends Agent
public class Infected extends Agent
Каждый объект Agent x хранит список всех объектов Agent y, которые вступили в контакт с Agent x, независимо от подкласса.Тип списка - «Агент», и этот список является переменной экземпляра с именем «links».Пример ...
public class Agent {
protected Context<Object> context;
protected Geography<Object> geog;
private int Id;
public Coordinate location;
public ArrayList<Agent> links = new ArrayList<>();
public ArrayList<Healthy> healthy_links = new ArrayList<>();
public Agent(Context<Object> context, Geography<Object> geog) {
this.context = context;
this.geog = geog;
this.Id = Id;
this.location = location;
this.links = links;
this.healthy_links = healthy_links;
}
}
//getters and setters
public void findContacts(){
Context context = ContextUtils.getContext(this);
//create a list of all agents
IndexedIterable<Agent> agents = context.getObjects(Agent.class);
for(Agent a: agents){
//if any of the agents are in the same location as this, if the links list doesnt already contain the agent, and if the agent is not this, then add it to the links list
if(a.getLocation()== this.getLocation() && !this.links.contains(a) && this != a){
this.links.add(a); //this is obviously possible//
this.healthy_links.add(a); //this is obviously not possible, but is there a super simple alternative
}
}
}
Есть ли простой способ просмотреть список объектов Агента y и отсортировать всех Здоровых Агентов в новый список с именем «Healthy_links» типа Healthy?