我想要的是根据代理商从Main的参数随机选择代理商。因此,我不想按其索引agent.get(i)
选择一个代理,而是要根据其属性随机选择一个代理。
如果可能的话,我会喜欢的:
agent.get(randomWhere(agent, a -> a.age > 50 && a.health == "good" && ...));
我知道randomWhere
函数将返回代理,但不会返回其索引。那么有没有可以直接执行此操作的功能?
我想到的解决方法是:
1-使用过滤器功能列出所有座席:
List agentslist = filter( agent, p -> p.p_gender == false && ...);
这将返回类似的内容:
[root.agent[1]( p_gender = false,...),root.agent[5]( p_gender = false,...),root.agent[17]( p_gender = false,...)]
2-我使用Regex
遍历agentslist,以从新列表中[ ]
之间的内容获取每个agent的索引。根据此示例,此新列表将具有这些值[1,5,17]
。
3-最后,我从新列表中随机选择,并将其值直接输入到agent.get(i)
中。
有更好的方法吗?
预先感谢
答案 0 :(得分:0)
要获取索引,只需使用getIndex()
函数。
int index=randomWhere(yourAgents,a->a.age>50 && a.health.equals("good")).getIndex();
agent.get(index);
请记住在比较字符串时使用equals()...“ ==”仅有效地用于基元。