java 常见数据结构(Array)

   

   在编程中,我们常常需要集中保留我们的数据,最简单的我们可以使用数组来保留数据,但是数组的大小是固定的,并且如果要保存具有映射关系的数据,这个时候只能通过两个数组进行保存,但是这明显是不现实的,为了保存不确定长度的数据,和存在映射关系的数据,jdk提供了一系列的集合类,他主要包含在java.util包下面,后来为了出来多线程环境下并发安全问题,在java.util.concurrent包下提供了一些多线程支持的集合类。集合类和数组的区别是集合类只能存储对象(当然保存的只是对象的引用),而数组即可以存储基本数据类型,也可以保存对象(当然这个时候保存也是引用对象),以下,就分开来讲讲java中的数据结构;


 (一)Array (数组)

    数组是最常见的数据结构,数组中可以存储一般数据类型,也可以存储引用数据类型,定义一个数组有以下几个方法:

   1.type[] 变量名 = new type[数组中元素的个数];如:Object[] object = new Object[5];int[] array = new int[5];定义是设定数组的长度,其中object,array,指向的是数组的首地址,通过它可以来访问数组的元素;

   2.type[] 变量名 = new type[]{逗号分隔的初始化值};

      int[] a = {1,2,3,4};

      int[] b = new int[]{1,2,3,4};

  其中int[] a = new int[]{1,2,3,4};的第二个方括号中不能加上数组长度,因为元素个数是由后面花括号的内容决定的。

   Java中的每个数组都有一个名为length的属性,表示数组的长度,length属性是public final int的,即length是只读的。数组长度一旦确定,就不能改变大小;

    3.数组的比较,数组内容的比较不可以使用equals(),因为没有重写object的equal方法,注意java中一切都是对象,数组当然也是对象,所以这里的比较还是使用的是"=="的比较,这时候比较的是 两个对象是不是同一个对象,也就是是不是执行同一个引用,同一块内存区域,当然这并不能达到比较数据的目的,具体的实现,可以自己写代码,遍历数组,比较每个元素,也可以利用java.util.Array类的equal方法,这个工具类提供了,数组操作的一系列工具类,如果:

    Arrays.equals(a,b)//比较数组a,b是否相等(数组的数量相等,数组中每个元素对于的值相等);
    4.java.util.Array还提供了一些其他的静态方法(java.util.Array的所有方法都是静态方法),(1)fill()填充方法用指定的对象来添加,数组中的某些对象,(2).equals,比较两个数组是否全部相等,        (3).copyOf,负责复制数组元素的值,(4).copyOfRange用于复制指定位置的数组的值,(5).asList:返回一个受指定数组支持的固定大小的列表。(对返回列表的更改会“直接写”到数组。)此方        法同 Collection.toArray() 一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。返回的列表是可序列化的,并且实现了RandomAccess 此方法还提供了一个创建固定长度的列表          的便捷方法,该列表被初始化为包含多个元素:

     List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");

     hashCode:基于指定数组的内容返回哈希码。对于任何两个满足 Arrays.equals(a, b)short 型数组 ab,也可用说 Arrays.hashCode(a) == Arrays.hashCode(b)。 注意当量数组数据的       值相等的时候,才会返回相同的hashcode;
    5.多维数组

       数组分一维数组,二维数组..多维数组,如以下的定义:

       type[][] i = new type[2][3];(推荐)

   type i[][] = new type[2][3];

       以上的定义只能针对固定长度的二位数组,也就是每一个二维数组的长度是固定的,但是有些情况下,二维数组的长度是不定的对于二维数组第二维长度不一样的情况,我们必须先保证其一维的长度要固定,如下实现方式:

       int[][] a = new int[3][];
        a[0] = new int[2];
        a[1] = new int[3];
        a[2] = new int[1];
也可以这样定义:

  int[][] c = new int[][]{{1, 2, 3},{4},{5, 6, 7, 8}};

       



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值