数据结构与集合(四) --- 数组与集合互转

数组

数组是一种顺序表, 它是组织和处理数据的一种常见方式, 可以使用索引下标进行快速定位并获取指定位置的元素,数组的下标从0 开始, 这源于 BCPL 语言,它将指针设置在0 的位置,用数组下标作为直接偏移量进行计算. 在java 体系中, 数组用以存储同一类型的对象, 一旦分配内存后 则无法扩容.

  • 声明数组和赋值的方式示例:
// 初始化完成, 容量的大小即等于大括号内元素的个数,使用频率并不高
String[] args3 = {
   "a","b"};
String[] args4 = new String[2];
args4[0] = "a";
args4[1] = "b";

上述源码中的args3 是静态初始化, 而 args4 是动态初始化. 无论静态初始化还是动态初始化, 数组是固定容量大小的. 对于动态数组,集合提供了 Vector 和 ArrayList 两个类, 前者是线程安全的,性能较差, 基本弃用,而后者是线程不安全的,使用频率最高的集合之一.

  • 数组的遍历
  1. 优先推荐JDK5 引进的 foreach 方式, 即 for(元素 : 数组名) 的方式, 可以在不使用下标的情况下遍历数组.

  2. 使用数组下标方式遍历:

for (int = 0; i < array.length; i++){
   }
  1. JDK8的函数式接口进行遍历:
Arrays.asList(args3).stream().forEach(x -> System.out.println(x));
Arrays.asList(args3).stream().forEach(System.out :: println);

Arrays 是针对数组对象进行操作的工具类, 包括数组的排序、查找、对比、拷贝等操作。尤其是排序,在多个JDK版本中再不断的进化,比如原来的归并排序改成Timsort(详见元素的比较) ,明显改善了集合排序性能。 另外,通过这个工具类也可以把数组转成集合Arrays.asList())。

集合

数组和集合都是用来存储对象的容器,前者性质单一,方便易用;后者类型安全,功能强大,且两者之间必然有互相转换的方式。
转换的方式分为两种情况: 数组转集合和集合转数组在数组转集合的过程中,注意是否使用了视图方式直接返回数组中的数据
以 Arrays.asList() 为例,它把数组转换成集合时,不能使用其修改集合相关的方法,如使用它的 add/remove/clear 方法会抛出UnsupportedOperationException 异常. 示例源码如下:

public class ArraysAsList {
   
    public static void main(String[] args) {
   
        String[] stringArray = new String[3];
        stringArray[0] = "one";
        stringArray
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值