【无标题】Array、ArrayList 和 LinkedList,Vector

Array、ArrayList 和 LinkedList 都是 Java 容器类,用于存储对象。

Array 是一种最基本的、固定长度的数组,可以存储基本类型和引用类型,但数组长度固定,一旦创建就不能改变,无法动态扩容。因此在需要动态增加或减少元素的场景下,不适合使用 Array。

ArrayList 和 Vector 都是 Java 中的容器类,用于存储对象。它们的主要区别在于线程安全和性能。
ArrayList 是基于动态数组实现的容器类,可以存储任何对象类型。在添加或删除元素时,自动扩容和缩容,因此可以动态地增加或减少元素。ArrayList 支持随机访问,在读取元素时效率比较高,但在插入和删除元素时需要移动其他元素,效率较低。 ArrayList 不是线程安全的

Vector 是基于动态数组实现的容器类,也可以存储任何对象类型。在添加或删除元素时,自动扩容和缩容,因此可以动态地增加或减少元素。与 ArrayList 不同的是,Vector 是线程安全的,在多线程环境下使用可以保证线程安全。但是由于线程同步的开销,Vector 的性能比 ArrayList 差一些。

LinkedList 是基于链表实现的容器类,也可以存储任何对象类型。插入和删除元素时只需要改变指针,不需要移动其他元素,因此效率较高。LinkedList 不支持随机访问,需要顺序访问元素,效率较低。

因此,固定长度,用array, 如果需要随机访问元素,应该使用数组或 ArrayList。如果需要频繁插入和删除元素,并且不需要随机访问元素,应该使用 LinkedList. 如果不需要考虑线程安全,应该使用 ArrayList,因为它的性能比 Vector 好。如果需要线程安全,可以使用 Vector,但是需要注意性能问题。在 Java 5 以后,还可以使用并发集合类来实现线程安全的容器,例如 CopyOnWriteArrayList。

ArrayLlist 初始空间默认10 ,扩容系数1.5 ,如果超过空间增加50%。
LinkedList 没有初始空间,每个节点都有自己的空间。
Vector 初始默认是10.扩容系数2, 翻倍增加。
数组转String : Arrays.toString(arr)
数组复制方法:System.arraycopy(arr1,0,arr2,0,len); Arrays.copyOf(arr1,len);
数组转集合方法: Arrays.asList(arr5) // 转换后不能对list 做增删操作
Collections.addAll( ); List list= new ArrayList<>(); Collections.addAll(list,arr);
集合转数组方法: list.toArray(); list2.toArray(new String[list.size()]);(list 是指定类型)

@Test
public void test() throws Exception{
    String[] arr1={"a","c","b",};
    String[] arr2 =arr1;
    System.out.println(arr1==arr2); // true
    String[] arr3 = new String[3];
    System.arraycopy(arr1,0,arr3,0,3);
    System.out.println(Arrays.toString(arr3));
    String[] arr4 = new String[5];
    System.arraycopy(arr1,0,arr4,2,3);
    System.out.println(Arrays.toString(arr4));
    String[] arr5 = Arrays.copyOf(arr1,3);
    System.out.println(Arrays.toString(arr5));
    Arrays.sort(arr1);
    System.out.println(Arrays.toString(arr1));

    //数组转集合 Arrays.asList
    List list  = Arrays.asList(arr1);  // 转换后的list 不能进行增删操作
	Integer[] num = new Integer[]{1,2,3,4,5,6,7,8,9};
	List<Integer> ans2 = new ArrayList<>();
	Collections.addAll(ans2,num);

   //集合转数组
    Object[] arr6 = list.toArray();
    System.out.println(Arrays.toString(arr6));
    List<String> list2= new ArrayList<>();
    list2.add("a1");
    String[] arr7 = list2.toArray(new String[list.size()]);
    System.out.println(Arrays.toString(arr7));
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值