具有蓝牙扫描和ListView的LinkedHashMap与ArrayList

时间:2015-06-22 18:17:00

标签: java listview arraylist linkedhashmap

当谈到被认为是更好的实施时,我有点混乱。

一方面,

LinkedHashMap提供以下好处:

  1. 防止重复项目(我需要能够防止扫描的蓝牙设备不重复输入列表。)
  2. 可以轻松访问用于更新值的项目。
  3. 以下陷阱:

    1. BaseAdapter课程不自然支持?我似乎无法使用getItem为自定义ListView Adapter检索元素。
    2. 但是ArrayList

      1. 我可以通过索引轻松访问项目。
      2. 可以轻松替换更新值的项目。
      3. 可以轻松使用自定义BaseAdapter课程。 但是......

      4. 我收到重复的项目。

      5. 除非我实施ArrayList.contains个对象的自定义comparators,否则我无法与ArrayList方法进行比较或检查。参数。
      6. 是否有更简单的方法来实现以下目标:

        1. 通过BLE扫描,从扫描结果中构建自定义对象。 (已经完成)。
        2. 如果自定义对象尚未包含在数组列表中,请将其粘贴在其中。
        3. 如果它已经在数组列表中,请用新的对象替换上一个对象?

1 个答案:

答案 0 :(得分:0)

似乎没有人回答,我会提供我的方法。

<强> 1。重复的条目

如果您想使用列表,那么正如我在评论中所述, 我会让你的Item类覆盖Object.equals()Object.hashCode()。 这些内容在ArrayList.contains()内部使用。 这样就不会在只添加项目的情况下为您提供重复的条目 list.contains(item) == false

<强> 2。排序

要对List进行排序,有一个非常有用的类叫做 Collections 使用静态方法Collections.sort()简单地对列表进行排序。 要完成这项工作,您需要在您的网站中实现 Comparable 界面 item class并在此处应用您自己的排序规则。

<强> TreeSet中

如果它不一定需要是List,我会建议 实现 Comparable 并使用TreeSet,它为您提供了性质 一组没有重复的条目,并通过添加直接排序。

<强> LinkedHashSet

如果您不需要重复的条目,则应遵循该顺序 按插入顺序,使用LinkedHashSet。

祝福,史蒂夫。