LinkedHashMap 与 ArrayList 与蓝牙扫描和 ListView
LinkedHashMap vs ArrayList with Bluetooth Scanning and ListView
关于什么是更好的实施,我有点困惑。
一只手,
LinkedHashMap
提供以下好处:
- 防止重复项(我需要能够防止扫描的蓝牙设备不重复进入列表。)
- 提供对项目的轻松访问以更新值。
以及以下陷阱:
-
BaseAdapter
class 自然不支持?我似乎无法使用 getItem
为自定义 ListView
Adapter
. 检索元素
然而 ArrayList
- 我可以通过索引轻松访问项目。
- 可以轻松替换项目以更新值。
使用自定义 BaseAdapter
class 轻松工作。
但是...
我收到重复的项目。
- 我无法轻松地与
ArrayList.contains
方法进行比较或检查,除非我实现了 ArrayList
's objects' 参数的一些自定义 comparators
。
是否有更简单的方法来实现以下目标:
- 通过BLE扫描,根据扫描结果构建自定义对象。 (已经完成)。
- 如果自定义对象不在数组列表中,请将其粘贴到数组列表中。
- 如果已经在数组列表中,用新的对象替换之前的对象?
似乎没有人回答,我将提供我的方法。
1.重复条目
如果你喜欢使用 List ,那么正如我在评论中所述,
我会让你的项目 class 覆盖 Object.equals()
和 Object.hashCode()
。
这些在 ArrayList.contains()
内部使用。
这会给你没有重复的条目,只添加项目
list.contains(item) == false
.
2。排序
要对列表进行排序,有一个非常有用的 class 称为 Collections,它
仅使用静态方法 Collections.sort()
对列表进行排序。
要完成这项工作,您需要在您的
项目 class 并在此处应用您自己的排序规则。
树集
如果不一定需要List,我推荐
实施 Comparable 并使用 TreeSet,它自然而然地为您提供
一组没有重复条目,直接通过添加排序。
LinkedHashSet
如果你只需要没有重复的条目并且应该遵循顺序
按插入顺序,使用LinkedHashSet。
祝你好运,史蒂夫。
关于什么是更好的实施,我有点困惑。
一只手,
LinkedHashMap
提供以下好处:
- 防止重复项(我需要能够防止扫描的蓝牙设备不重复进入列表。)
- 提供对项目的轻松访问以更新值。
以及以下陷阱:
-
BaseAdapter
class 自然不支持?我似乎无法使用getItem
为自定义ListView
Adapter
. 检索元素
然而 ArrayList
- 我可以通过索引轻松访问项目。
- 可以轻松替换项目以更新值。
使用自定义
BaseAdapter
class 轻松工作。 但是...我收到重复的项目。
- 我无法轻松地与
ArrayList.contains
方法进行比较或检查,除非我实现了ArrayList
's objects' 参数的一些自定义comparators
。
是否有更简单的方法来实现以下目标:
- 通过BLE扫描,根据扫描结果构建自定义对象。 (已经完成)。
- 如果自定义对象不在数组列表中,请将其粘贴到数组列表中。
- 如果已经在数组列表中,用新的对象替换之前的对象?
似乎没有人回答,我将提供我的方法。
1.重复条目
如果你喜欢使用 List ,那么正如我在评论中所述,
我会让你的项目 class 覆盖 Object.equals()
和 Object.hashCode()
。
这些在 ArrayList.contains()
内部使用。
这会给你没有重复的条目,只添加项目
list.contains(item) == false
.
2。排序
要对列表进行排序,有一个非常有用的 class 称为 Collections,它
仅使用静态方法 Collections.sort()
对列表进行排序。
要完成这项工作,您需要在您的
项目 class 并在此处应用您自己的排序规则。
树集
如果不一定需要List,我推荐 实施 Comparable 并使用 TreeSet,它自然而然地为您提供 一组没有重复条目,直接通过添加排序。
LinkedHashSet
如果你只需要没有重复的条目并且应该遵循顺序 按插入顺序,使用LinkedHashSet。
祝你好运,史蒂夫。