这可能是一个简单的问题,甚至没有任何接口(数组,地图等)也是不可能的,但我想知道是否有可能将对象名称转换为String,因此我可以作为参数传递。我有两个类Paciente和Sintomas有多个对象,我需要作为参数传递给一个函数,但我不想使用数组(它必须是这样的),我无法想象任何其他方式这样做没有手动为每个插入一个插入。
Paciente Paciente1 = new Paciente("001", "Ana Melo", 33, "");
Paciente Paciente2 = new Paciente("002", "Rui Costa", 13, "");
Paciente Paciente3 = new Paciente("003", "Joana Martins", 85, "");
Paciente Paciente4 = new Paciente("004", "Pedro Torres", 53, "");
Paciente Paciente5 = new Paciente("005", "Ana Gomes", 93, "");
Paciente Paciente6 = new Paciente("006", "Jorge Costa", 56, "");
Sintomas Sintoma1 = new Sintomas("001", "febre");
Sintomas Sintoma2 = new Sintomas("001", "dores");
Sintomas Sintoma3 = new Sintomas("001", "machas");
Sintomas Sintoma4 = new Sintomas("002", "febre");
Sintomas Sintoma5 = new Sintomas("002", "manchas");
Sintomas Sintoma6 = new Sintomas("003", "febre");
Sintomas Sintoma7 = new Sintomas("003", "dores");
Sintomas Sintoma8 = new Sintomas("004", "febre");
Sintomas Sintoma9 = new Sintomas("006", "manchas");
Sintomas Sintoma10 = new Sintomas("006", "dores");
// now I would like to pass to a function as argument something like this:
for(int i = 0 ; i < 6 ; i++)
kSession.insert("Paciente"+(i+1));
// instead of making
kSession.insert(Paciente1);
kSession.insert(Paciente2);
kSession.insert(Paciente3);
// and so on.
答案 0 :(得分:1)
这样的东西应该可以工作(假设你的意思是因为大小限制没有数组),请注意,你必须在某个地方添加数据,它也可以从txt或其他东西加载它,但它必须在某个时候定义
List<Paciente> pacientes = new ArrayList<>(); // no size constraints, automatically expands if too small
pacientes.add(new Paciente("", "", ""));
for (Paciente paciente : pacientes) { // loop all Patientes in pacientes
kSession.insert(paciente); // add a paciente to the session, for every entry
}
ofcource可以为任何类或对象
完成这一切都归结为,您希望如何存储和访问数据,以及您需要存储和访问数据的位置。使用ArrayList和Map提供了轻松更改数据列表大小和内容的实用程序,但是必须首先插入任何数据
作为旁注,如果患者有ID,那么使用Map
Map<String, Paciente> pacientes = new HashMap<>();
提供了一种非常快速地访问patiens的方法,如果需要,TreeMap结构按键排序。
其他选择可能是 管理数据的包装类将与ArrayList&lt;&gt;类似地工作。但您可以从列表中定义添加,删除等规则。
public class Wrapper{
private List<Paciente> pacientes = new ArrayList<>();
public void addPaciente(Paciente paciente){
if(!this.pacientes.contains(paciente)) // prevent multi entries
paciente.add(paciente);
}
public void addPacientes(List<Paciente> pacientes){
for(Paciente paciente : pacientes) // add all patients using the add method
this.addPaciente(paciente);
}
public List<Paciente> getPacientes(){
return this.pacientes;
}
}
然后您可以将患者添加到kSession,如前所述
最后,没有理由为什么Paciente可以拥有Sintomas的列表,这样
public class Paciente{
private List<Sintomas> sintomas = new ArrayList<>();
public addSintomas(Sintomas sintomas){
if(!this.sintomas.contains(sintomas))
this.sintomas.add(sintomas);
}
// rest is the same principle as above in "Wrapper"
}
通过这种方式,您可以获得一个Paciente,并添加一个Sintomas,然后当您想要查看Pacientes Sintomas时,您可以从该Paciente获取Sintomas列表