【问题标题】:TreeSet vs Arraylist: Modifying elementsTreeSet vs Arraylist:修改元素
【发布时间】:2017-05-27 14:08:05
【问题描述】:

所以我想将聊天元素存储在集合中,但我仍然不知道要使用什么集合。 就像 WhatsApp 的聊天列表一样,它按日期排序,但每个聊天的属性/参数可以随时更改(聊天静音/标记...)

  1. 元素(ID、日期、不同参数)
  2. 需要按日期排序[一直]

    => TreeSet 是最优的

  3. 不允许重复条目[不经常发生]

    => Treeset 是最优的

  4. 参数在变化[一直]

    (按Id迭代,设置具体参数)

    => 我认为 ArrayList 是更好的选择

  5. Android 应用,内存使用量越少越好

    => Arraylist 是最优的

目前我正在使用 Arraylists,但我不确定第 4 点是否正确,如果是,是否相关。

【问题讨论】:

  • 这真的取决于你将如何使用容器,所以你的描述并不能真正告诉我们足以推荐一个。您的插入顺序是否与排序顺序不同(您是否将具有昨天日期的元素插入到具有今天日期的容器中)?为什么不能有两个具有相同日期的元素,什么时候发生?你经常使用contains(...)吗?你经常使用iterator()吗?以此类推。
  • 通常我只是插入带有今天日期的元素或将一些元素设置为今天的日期...我可以拥有具有相同日期但不具有相同 ID 的元素...我使用 iterator() 更多经常比包含(..)
  • 好吧,你应该更新你的问题,提供更多关于你正在编写什么样的程序以及你正在用这个容器做什么类型的事情的信息。就目前而言,几乎可以制作任何容器来满足您给出的要求。你可以看到你已经收到了两个完全不同的建议,使用HashMapPriorityQueue,这表明我们可能不知道你现在应该使用什么。也可能是您应该使用多个容器。
  • 更新了,请再看看:)

标签: java performance arraylist set treeset


【解决方案1】:

你可以使用哈希图

设计一个哈希码生成器,它根据日期映射数据,从日期字符串中获取组件并将其分配给数组列表(内部使用),以便它始终按顺序保存在增加的日期。使用 ID 作为键映射它。

按 Id 迭代

使用 hashmap,简化参数的获取和频繁更改。

内存只会被使用一次。

【讨论】:

  • HashMap 是无序的。特别是,它可以在添加新元素时任意重新排序元素。没有办法以一种会导致元素被排序的方式生成哈希码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多