文件保存大概20W的数据量,数据格式如下
#briup1775|037:wKgB1660A|7|1285376779|123.40.14.177   ---代表上线信息(标识符  7)
#|037:wKgB1660A|8|1285376779|176.25.20.110                     --代表下线信息(标识符   8)然后我用流对文件进行读取,如果是上线信息,保存在一个集合1中,
如果是下线信息,那就遍历集合1中的上线信息,通过ip这个来匹配,然后用一个集合2保存上线and下线信息,把这条上线信息
从集合1中remove掉,那么用什么集合比较好呢?求大神指教

解决方案 »

  1.   

    集合A用hashmap或hashtable,ip为key
    第二个arraylist,因为你只增加,不删除
      

  2.   

    由于数据量比较大,可以考虑运用多线程处理.
    主要思路应该是先把上线信息集合还有下线信息集合都线数据单独归类出来.(多线程+正则+java.util.stream.Stream)这样来读取数据快些.
    然后判断两个集合.
    对于多现在集合考虑使用java.util.concurrent.ConcurrentHashMap<K,V>