如果我将很多数据信息放入ArrayList中去,那么以后我将系统进行分布式的改写后,处理ArrayList的方法,现在我所想到的就是通过一个程序将ArrayList中的数据进行划分,想到的方法是通过“数组复制”,将当前ArrayList中的数据通过get方法调用,复制到另一个新开辟的List中,划分结束后,由各自的处理程序,进行以后的处理,这样的想法中ArrayList的“拆分过程”会浪费很多时间么?请大家指教,谢谢!

解决方案 »

  1.   

    你的一个ArrayList总归是在一个JVM中的,你分布式后怎么用?建议楼主去看一下memcached,一个分布式的数据缓存,可以对数据按照KEY进行散列,效率应该没什么问题。
      

  2.   


    谢谢您的建议,您说“你的一个ArrayList总归是在一个JVM中的,你分布式后怎么用?”,JVM在java语言编写的程序中起到屏蔽操作系统之间差异的问题解释Java语言的作用,当我有实现分布式机制的Java类库后,您认为程序就不能跑在JVM上么?java的RMI机制,CORBA的一个标准实习JacORB都提供分布式机制?您又怎么解释?谢谢
      

  3.   

    是不是想将一个ArrayList分成多个?可以使用subList()方法。
    这个方法是AbstractList类的。
    ArrayList继承了这个类。以下是JDK里面的描述:subList
    public List<E> subList(int fromIndex,
                           int toIndex)返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图。(如果 fromIndex 和 toIndex 相等,则返回的列表为空)。返回的列表由此列表支持,因此返回列表中的非结构性更改将反映在此列表中,反之亦然。返回的列表支持此列表支持的所有可选列表操作。
    此方法省去了显式范围操作(此操作通常针对数组存在)。通过传递 subList 视图而非整个列表,期望列表的任何操作可用作范围操作。例如,下面的语句从列表中移除了元素的范围:             list.subList(from, to).clear();
     可以对 indexOf 和 lastIndexOf 构造类似的语句,而且 Collections 类中的所有算法都可以应用于 subList。
    如果支持列表(即此列表)通过任何其他方式(而不是通过返回的列表)从结构上修改,则此方法返回的列表语义将变为未定义(从结构上修改是指更改列表的大小,或者以其他方式打乱列表,使正在进行的迭代产生错误的结果)。 此实现返回一个子类化 AbstractList 的列表。子类在 private 字段中存储底层实现列表中 subList 的偏移量、subList 的大小(随其生存期变化)以及底层实现列表的预期 modCount 值。子类有两个变体,其中一个实现 RandomAccess。如果此列表实现 RandomAccess,则返回的列表将是实现 RandomAccess 的子类实例。 子类的 set(int, E)、get(int)、add(int, E)、remove(int)、addAll(int, Collection) 和 removeRange(int, int) 方法在对索引进行边界检查和调整偏移量之后,都委托给底层实现抽象列表上的相应方法。addAll(Collection c) 方法返回 addAll(size, c)。 listIterator(int) 方法返回底层实现列表的列表迭代器上的“包装器对象”,使用底层实现列表上的相应方法可创建该迭代器。iterator 方法返回 listIterator(),size 方法返回子类的 size 字段。 所有方法都将首先检查底层实现列表的实际 modCount 是否与其预期的值相等,并且在不相等时将抛出 ConcurrentModificationException。 
    指定者:
    接口 List<E> 中的 subList
    参数:
    fromIndex - subList 的低端(包括)
    toIndex - subList 的高端(不包括) 
    返回:
    列表中指定范围的视图 
    抛出: 
    IndexOutOfBoundsException - 端点索引值超出范围 (fromIndex < 0 || toIndex > size) 
    IllegalArgumentException - 端点索引顺序颠倒 (fromIndex > toIndex)--------------------------------------------------------------------------------
      

  4.   

    什么是分布式类库?楼主所谓的RMI这样的分布式类库无非只是提供了跨JVM(或者说是跨进程)的方法、数据调用而已。难道有了这些API就完全的把底层的东西给屏蔽了吗?用这些API就能直接去做应用了吗?性能、容错等等这些问题都解决了吗?
      

  5.   


    底层东西当然不能忽略,ArrayList中的数据无非也是经过了包装后的数据,实现分布式机制后,当然是对数据进行处理,至于涉及到数据传输或者通过设计上直接在本地就行处理就另当别论了,对这些数据的处理在分布式环境中进行处理,如CORBA中提供的sequence中保存需要操作数据。我不明白您想和我说明什么问题,我确实才疏学浅。