如何将我的所有传统Vector更改为ArrayLists,是否有任何警告?

slh*_*hck 4 java refactoring vector arraylist

我在Eclipse中有一个中型Java项目,它使用Vector<E>而不是首选项目 ArrayList<E>.我想替换那些.

  • 有没有办法,使用Eclipse来改变所有这些?任何重构方法?

  • 或者对每次Vector<String>事件进行一般搜索和替换是否足够?这有什么警告吗?这种方法失败的情况是什么?

实际上,我只是做了后者,它适用于我的应用程序,但这应该是一个更普遍的问题.

Sea*_*wen 5

VectorList当包含的Collections API ArrayList被引入时,它被改进以在Java 1.2中实现.所以它既有旧式的方法elementAt(),也有新式的方法get(),这些方法在很大程度上是相同的.

旧的方法不在ListArrayList,所以如果你搜索和替换,并使用旧方法,它将无法编译.但是很容易找到并修复它们.同样iterator()/ Iterator替换Enumeration等.

Vector的操作是同步的; 如果程序依赖于它的正确性,如果替换为,则可能会失败,但事实ArrayList并非如此.Collections.synchronizedList()如果您需要旧的行为,请换行.这是更微妙的错误的来源.

  • 此外,因为Vector现在实现List,您可能希望尽可能多地引用List(例如,而不是Vector <String> x = new Vector <String>()使用List <String> x = new Vector <String>()这暴露了像elementAt()这样的方法的使用,你可以在完全插入ArrayList之前更新它.无论如何,最好在公共接口中使用Lists. (2认同)