日期:2014-05-20  浏览次数:20628 次

List<String> and String[]
List<String> and String[] 有什么不同? 怎么确定什么时候 用哪个 ?

------解决方案--------------------
String[] 是定长数组,而 List<String> 可以看作是变长数组。

长度是固定的,即不会增加也不会减少时采用 String[]
长度未知,并且长度有可能增加时,使用 List<String>,比如要把
文件中的每一行都放到数组中,由于并不知道文件中的行数,所以使用
List<String> 就较为方便一些。

而且 List<String> 底层是以 String[] 为基础而扩展的。
------解决方案--------------------
是的, 最基本的区别就是一个是定长, 一个是不定长.
------解决方案--------------------
使用数组,最显著的特点,就是数组的元素个数是固定的,位置也是和元素相对应的。
String[] 当你确定每个位置的元素(字符串)内容的时候,或者,要频繁通过位置来取得数组内容的时候。使用数组还是很好的。当然,如果你要对数组进行添加,删除某个元素(字符串)那就是比较麻烦的事情,因为,这不但会影响的其他元素的位置,也要影响的数组的大小。
List <String > 在J2SE里面,确切的将,它是一个接口,表示一个对于链表的所有功能(操作)。当然,J2SE里面也提供的List接口的一些具体的实现类,最常用的应该是ArrayList和LinkedList,使用尖括号将String类括起来,是JDK1.5的范型所要求的,也就是说,这表明,你所使用的链表里面只能存放String类型的数据。当然,使用ArrayList和LinkedList都不用在意链表的长度问题,因为,一般情况下,我们使用的链表大小是不会超出Java整型变量的最大值的。所以,我认为,预期使用String[]不如使用ArrayList<String>,这样既使用方便,也不用顾虑到其他的一些问题(比如增删里面的元素,有可能是元素位置变动之类的)。当然,如果,你频繁的要对这个集合当中的元素进行增删,不妨使用LinkedList,它以循环链表作为原型,对于数据的增删操作,相当方便,正反两个方向的对元素的遍历也可以使用listIterator,还是暴爽无比的。