爱问知识人 爱问教育 医院库

Java集合框架使用注意事项有哪些呢?

首页

Java集合框架使用注意事项有哪些呢?

Java集合框架使用注意事项有哪些呢?

提交回答

全部答案

    2017-08-04 15:09:16
  •   List的有用实现
    1。ArrayList
    2。LinkedList
    3。Vector
    4。Stack
    讨论1:底层机制(牵扯到的数据结构的知识请读者自行复习)
    ArrayList与Vector都是基于数组实现的,这就说明ArrayList与Vector适合做遍历而不适合做频繁的插入和删除。
       LinkedList是基于链表实现的,所以它生来就是为了频繁插入与删除对象。 讨论2:特殊功能 Stack是一个后进先出(LIFO)对象堆栈,而LinkedList除可以被用作堆栈外,还可以被用作队列或双端队列。 不同的是Stack继承自Vector,也就是说它也是基于数组实现的。
       讨论3:内存占用 基于数组实现的List,在动态扩展时会产生新的数组,然后把旧数组里的内容复制到新数组里,这会产生大量的不再被使用的对象引用变量等待系统回收。而基于链表实现的List就不会有这种问题。 讨论4:同步问题 Vector与Stack生来就是同步的,而ArrayList与LinkedList需要使用Collections。
      synchronizedList(List list)方法来转换成同步List。从它们的对象上返回的迭代器是快速失败的,也就是说在使用迭代器进行迭代的时候,必须使用迭代器本身的remove、add、set方法来添加或更改List元素,如果在迭代的同时,在其他线程中从结构上修改了List(结构上的修改是指任何添加或删除一个或多个元素的操作,或者显式调整底层数组的大小;仅仅设置元素的值不是结构上的修改),快速失败迭代器会尽最大努力抛出ConcurrentModificationException。
       讨论5:使用策略 如果数据被从数据源提取,数据量不确定,Examda提示: 该数据一经被提取后就几乎不会再添加或删除,那么应该建立一个LinkedList来保存从数据源中取出的数据,然后将该LinkedList转换成ArrayList来优化遍历操作。
      反过来,数据量确定的数据从数据源取出可以先建立一个ArrayList来保存,根据需要如需频繁增删,就转换为LinkedList,如频繁遍历就不需转换。 转换的方法就是使用对应的List类来封装目标List对象。如 ArrayList al = new ArrayList(); LinkedList ll = new LinkedList(al); 同理反过来也可以 LinkedList ll = new LinkedList(); ArrayList al = new ArrayList(ll); 讨论6:toArray()方法 基于数组实现的List会直接返回一个底层数组的拷贝(使用了System。
      arraycopy方法),Examda提示: 基于链表实现的List会新生成一个数组。 讨论7:不可修改 通过使用Collections。unmodifiableList(List list)来生成一个不可修改的List,试图修改返回的列表,不管是直接修改还是通过其迭代器进行修改,都将导致抛出UnsupportedOperationException。
       讨论8:遍历器 请尽量使用Iterator,Enumeration已不被鼓励使用。 最后,请参考java。util。Collections类,该类提供了很多有用的操纵集合对象的方法。

    做***

    2017-08-04 15:09:16

类似问题

换一换
  • 银行业务 相关知识

  • 投资理财知识
  • 投资理财问题解决
  • 投资理财

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):