[]数组:是线性存储,只便于查找和修改,不便于增删,所以这种类型的只适合作为接受参数展示一下。
list列表:是链式存储,Java已经包装好方法,便于增删改查。
================================================================
String[]和List<String>的互换
String[]转List:
List list = Arrays.asList(arr);
List转String[]:
String[] arr = list.toArray(new String[list.size()]);
================================================================
详细点的说明:
一直对String[]和List<String>的区别不太清楚,针对此问题做一个总结。
典型的区别是,String[]数组里面存放的String类型的值,List<String>存放的String类型的对象。
数组的容量是固定的,只能一次获取或者设置一个元素的值,而ArrayList和List<T>的容量可以根据需要自动扩充、修改、删除或者插入数据。
数组可以具有多个维度,而List<T>始终只具有一个维度。
String[]是 数组,定长,不可变,List<String> 是泛型 ,非定长,可变。
作用是一样的,但灵活性不同。String[]是定长的,不容易实现容量增长、中间插入一个字符串这样的操作,List<String>则可以方便实现。如果你能确定字符串数组长度,而且可以逐项填充的话,建议用String[]。如果不能确定数组长度,或者在计算值时需要不断向中间插入一个字符串,可以使用List<String>,生成完成后再用ToArray()方法转换为String[],String[]也可以通过List的AddRange方法添加到List<String>。
特定类型(Object 除外)的数组 的性能优于List的性能。这是因为 List的元素属于 Object 类型;所以在存储或检索值类型时通常发生装箱和取消装箱操作。不过,在不需要重新分配时(即最初的容量十分接近列表的最大容量),List< T> 的性能与同类型的数组十分相近。
数组是在内存中连续存储的,所以索引速度非常快,赋值和修改比较简单。
//声明数组
string[] str = new string[2];
//声明数组并赋值
string[] str = { "a", "b" };
str[0] = "a";
str[1] = "b";
str[1] = "c";
但是数组在声明时需要指定数组的长度,长度过长会造成内存浪费,过短会造成数据溢出,如果声明时不清楚数组的长度就会比较麻烦,另外在数组中插入数据比较麻烦。
ArrayList
ArrayList arrayList = new ArrayList();
arrayList.Add("a");
arrayList.Add("b");
arrayList.Add(123);
//插入指定索引位置数据
arrayList.Insert(0, 123);
//修改指定索引位置数据
arrayList[2] = 234;
//删除匹配数据
arrayList.Remove("a");
//删除指定索引数据
arrayList.RemoveAt(1);
在arrayList中,不仅插入了字符串a,还插入了数字123。这样在ArrayList中插入不同类型的数据是允许的。ArrayList会把所有插入其中的数据当作为object类型来处理,在使用ArrayList处理数据时,可能会报类型不匹配,也就是ArrayList不是类型安全的。在存储或检索值类型时通常发生装箱和取消装箱操作,带来很大的性能耗损。
装箱与拆箱的概念
装箱:就是将值类型的数据打包到引用类型的实例中。
比如将string类型的值a赋给object对象obj
拆箱:就是从引用数据中提取值类型。
比如将object对象obj的值赋给string类型的变量str。
string str = "a";
object obj = (object)str;
object obj = "a";
string str = (string)obj;
在声明List集合时,我们同时需要为其声明List集合内数据的对象类型。
List<string> list = new List<string>();
list.Add("a");
list.Add("b");
list[0] = "c";
//移除指定匹配项
list.Remove("a");
//移除对应索引值
list.RemoveAt(0);
String
[]只能存放
String
格式数据,而且一般的是固定大小长度的;
List
指的是集合,<>是泛型,里面存放一个实体类可以是
String
,int或者自定义的;
List
<
String
>
list
=new
List
<
String
>();
String
为你想要的对象,里面可以有属性,方法等,这就是面向对象。
而
String
[]只是存放值而已,不是对象
IEnumerable<
string
> lstNew = null;
List
<
string
> lstOne = new
List
<
string
>(){"January", "February", "March"};
List
<
string
> lstTwo = new
List
<
string
>()...
Java中
string
[] 和
List
的
区别
一直对
string
[]和
List
定义不怎么清楚,特地总结一下:
string
[]数组里面是存放
string
型的值,
List
是存放
string
类型的对象
数组的容量是固定的,您只能一次获取或设置一个元素的值,而
List
的容量可根据需要自动扩充、修改、删除或插入数据。
数组可以具有多个维度,而
List
< T> 始终只具有一个维度。但是,您可以轻松创建数组列表或列表的列表。特定类型(Object 除外)的数组 的性能优于
List
的性能。 这是因
使用方面:
他们的作用一样,但是灵活性不一样。
List
<
String
>是可以方便使用的,如果不能确定数组的长度,或者需要不断的像中间插入一个字符串,可以用
List
<
String
>。
St...