【发布时间】:2015-06-22 18:17:00
【问题描述】:
当谈到什么被认为是更好的实现时,我有点困惑。
一方面,
LinkedHashMap 提供以下好处:
- 防止重复项(我需要能够防止扫描的蓝牙设备不重复进入列表。)
- 提供对项目的轻松访问以更新值。
还有以下陷阱:
-
BaseAdapter类自然不支持?对于自定义ListViewAdapter,我似乎无法使用getItem检索元素。
但是ArrayList
- 我可以通过索引轻松访问项目。
- 可以轻松替换项目以更新值。
使用自定义
BaseAdapter类轻松工作。 但是……我收到重复的项目。
- 除非我实现
ArrayList的对象参数的一些自定义comparators,否则我无法轻松地与ArrayList.contains方法进行比较或检查。
有没有更简单的方法来实现以下目标:
- 通过 BLE 扫描,根据扫描结果构造自定义对象。 (已经完成)。
- 如果该自定义对象尚未包含在数组列表中,请将其粘贴到数组列表中。
- 如果已经在数组列表中,用新的对象替换之前的对象?
【问题讨论】:
-
如何使用
Set或覆盖add()的List以仅在其不存在时添加?我也看不出您为什么要比较Map和List。在我看来像苹果和橘子 -
@user489041 我需要订购,一套不保证订购吗?我比较这两者的原因是因为我不完全确定哪一个对我的实施的最后一点更好。我做了很多研究,但没有找到太多描述在这种特殊情况下该怎么做。
-
ArrayList.contains 在内部使用 Object.equals。所以你可以覆盖 equals 和 hash ,实现可比较并结合 contains 和 Collections.sort 你有你需要的一切。
-
@user489041,我的意思是。如果我采用 ArrayList 方法。为什么我的 ArrayList.contains(object) 总是返回 false,并复制这些扫描?这意味着我需要使用 LinkedHashMap?
-
@Tukajo
LinkedHashSet保证顺序 - 这是将元素添加到集合中的顺序。
标签: java listview arraylist linkedhashmap