gpt4 book ai didi

java - 如何调用和包含 ArrayList
转载 作者:行者123 更新时间:2023-12-02 05:28:38 26 4
gpt4 key购买 nike

我有一个像这样的 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 : 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>();

这个类有这个变量

private String wlanAp;  
ArrayList<Integer> measurements = new ArrayList<Integer>();

因此,在主要方法中,我将遍历 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());
}

但是我的问题 - 它创建了 14 个对象而不是 7 个。为什么?而且我不知道如何检查是否已经存在具有此字符串名称的元素

感谢您的帮助,我希望我涵盖了所有内容..如果不是,请询问

最佳答案

if (averagerList.contains(WlanAp))

此检查不起作用,因为 WlanAp 是字符串,而averaverList 包含Averavers。根据其 equals 方法的实现,两者并不等效。

您应该使用映射而不是列表,映射旨在充当从一个值到另一个值的查找,而列表是单一类型的集合。使用 map ,您的代码将如下所示:

Averager av = map.get(WlanAp);
if ( av == null ) {
av = new Averager();
map.put( WlanAp, av );
}

关于java - 如何调用和包含 ArrayList<Object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25761022/

26 4 0