V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
szhgoldeneye
V2EX  ›  问与答

请教一个代码设计的问题

  •  
  •   szhgoldeneye · 2019-07-18 10:07:45 +08:00 · 1542 次点击
    这是一个创建于 1957 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在我有一堆对象的集合,该集合要做到

    • 随时可增删
    • 随时全遍历搜索

    目前只是简单得放在内存里,用 ArrayList 来做,搜索因为有速度要求,用了 Future 做并发查询

    想问下这种情形下有没有什么好的实现方式

    7 条回复    2019-07-18 12:02:35 +08:00
    momocraft
        1
    momocraft  
       2019-07-18 10:19:46 +08:00
    随便线程安全的 iterable 容器都可以?反正只是全遍历搜索
    carlclone
        2
    carlclone  
       2019-07-18 10:25:48 +08:00
    为何需要全遍历搜索?
    Macolor21
        3
    Macolor21  
       2019-07-18 10:33:55 +08:00 via iPhone
    增删用 ArrayList ? ConcurrentHashMap 应该可以满足
    szhgoldeneye
        4
    szhgoldeneye  
    OP
       2019-07-18 10:34:43 +08:00
    @carlclone 目前没法对这些集合数据做聚类这种 现在的场景下只能全遍历
    szhgoldeneye
        5
    szhgoldeneye  
    OP
       2019-07-18 10:34:55 +08:00
    @Macolor21 好的 我了解一下
    Mirt
        6
    Mirt  
       2019-07-18 11:37:34 +08:00 via iPhone
    如果可以对对象排序的话 查询效率会高一些
    如果频繁增减的话 使用链表结构不要用数组结构好一些
    如果有多线程同时操作用线程安全的集合
    micean
        7
    micean  
       2019-07-18 12:02:35 +08:00
    场景描述不是很清晰,又要并发安全又要遍历,用 ConcurrentSkipListSet 怎么样
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3583 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:55 · PVG 18:55 · LAX 02:55 · JFK 05:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.