Java 如何调用和包含ArrayList<;对象>;
我有一个像这样的txt文件,我正在浏览它Java 如何调用和包含ArrayList<;对象>;,java,arraylist,Java,Arraylist,我有一个像这样的txt文件,我正在浏览它 wlan_AP : lcb-kasse | ActiveUsers : 1 wlan_AP : WLAN-C7B702 | ActiveUsers : 1 wlan_AP : Telekom | ActiveUsers : 1 wlan_AP : Telekom | ActiveUsers : 1 wlan_AP : FRITZ!Box | ActiveUsers : 1 wlan_AP : Telekom | ActiveUsers : 1
wlan_AP : lcb-kasse | ActiveUsers : 1
wlan_AP : WLAN-C7B702 | ActiveUsers : 1
wlan_AP : Telekom | ActiveUsers : 1
wlan_AP : Telekom | ActiveUsers : 1
wlan_AP : FRITZ!Box | ActiveUsers : 1
wlan_AP : Telekom | ActiveUsers : 1
wlan_AP : Sperling2 | ActiveUsers : 1
wlan_AP : lcb-kasse | ActiveUsers : 2
wlan_AP : WLAN-C7B702 | ActiveUsers : 2
wlan_AP : Telekom | ActiveUsers : 2
wlan_AP : Telekom | ActiveUsers : 2
wlan_AP : FRITZ!Box | ActiveUsers : 2
wlan_AP : Telekom | ActiveUsers : 2
wlan_AP : Sperling2 | ActiveUsers : 2
因此,我测量了WiFi接入点名称(wlan_AP)和当前活动用户的数量
如您所见,每个接入点都有多个测量值(例如,lcb kasse)
我希望在我的程序结束时获得活动用户的平均数量
因此,我创建了一个名为Averager的新类。每
averagerList = new ArrayList<Averager>();
averagerList=newarraylist();
这个类有这个变量
private String wlanAp;
ArrayList<Integer> measurements = new ArrayList<Integer>();
私有字符串wlanAp;
ArrayList测量值=新的ArrayList();
在main方法中,我将遍历txt文件,将wlanAp作为字符串,并查看是否有一个对象具有wlanAp
ArrayList<Averager> averagerList = new ArrayList<Averager>;
if (averagerList.contains(WlanAp))
{
//it's already existing, just add a new measurement
mittler.addMeasurement(m.getDb());
}
else
{
averager = new Averager(mWlanAp);
averagerList.add(averager);
averager.addMeasurement(m.getActiveUsers());
}
ArrayList averagerList=新建ArrayList;
if(averagerList.contains(WlanAp))
{
//它已经存在,只需添加一个新的度量值
mittler.addMeasurement(m.getDb());
}
其他的
{
平均值=新平均值(mWlanAp);
添加(平均器);
averager.addMeasurement(m.getActiveUsers());
}
但是我的问题——它创建了14个对象,而不是7个。为什么?我不知道如何检查是否已经存在具有此字符串名称的元素
谢谢你的帮助,我希望我涵盖了所有。。如果不是的话,就问吧
if (averagerList.contains(WlanAp))
此检查不起作用,因为WlanAp是字符串,而averagerList包含Averager。从equals方法的实现来看,这两种方法并不等价
您应该使用映射而不是列表,映射被设计为从一个值到另一个值的查找,而列表是单一类型的集合。使用映射,您的代码如下所示:
Averager av = map.get(WlanAp);
if ( av == null ) {
av = new Averager();
map.put( WlanAp, av );
}
很好的回答,检查地图类,它应该澄清它的用法。