我有一个对象数组列表,其中包含有关对特定目标号码的呼叫的信息。我一直在尝试找出搜索此列表并返回出现次数最多的数字以及这些出现次数的最佳方法(从链接类中的另一个方法调用)。
例如:
我有这种方法,它通过调用地址簿中的随机数将调用添加到列表中
public void makeCall(Phonecall call)
{
call = new Phonecall();
call.setDestination(anyNumber());
call.setDuration(0 + (int)(Math.random() * (((balance/25) * 60) - 0) + 1));
double cost = (call.getDuration()/60 * 25);
balance = getBalance() - cost;
updateCallHistory(call);
}
然后我需要能够搜索它正在更新的arraylist callHistory 并找到被调用次数最多的目的地并返回该数字和计数。
然后我将为一个人拥有的每个“电话”调用这些值,并打印所有“电话”中计数最高的目的地以及它的计数。
我一直在环顾四周,找到了有关查找特定对象出现的信息,但无法弄清楚如何检查该对象中的特定字段而不是对象本身。
抱歉,如果这听起来令人费解,但我很困惑并且已经没有想法了,我的哈希映射还不是很强大,我无法调整我找到的示例来做我想做的事。
根据下面的评论,我有
public void mostCalled(String[] args)
{
Map<Phonecall,Integer> map = new HashMap<Phonecall, Integer>();
for(int i=0;i<callHistory.size();i++){
Integer count = map.get(callHistory.get(i));
map.put(callHistory.get(i), count==null?1:count+1);
}
System.out.println(map);
}
但我不知道如何使用 Phonecall 的目标字段而不是对象本身。
这样的事情会更合适吗:
public void mostCalled(String[] args)
{
Map<String,Integer> map = new HashMap<String, Integer>();
for(Phonecall call : callHistory)
{
Integer count = map.get(call.destination);
map.put(call.destination, count==null?1:count+1);
}
System.out.println(map);
}