`
lncygyh
  • 浏览: 45898 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类

Java中数组常用方法的总结

    博客分类:
  • JSP
阅读更多
一、Java标准类库提供static方法System.arraycopy(),用它复制数组比用for循环复制要快得多,     System.arraycopy()针对所有的类型做了重载,需要5个参数。
    第一个参数:源数组。
    第二个参数:偏移量,即从哪个位置开始复制的索引。
    第三个参数:目标数组。
    第四个参数:偏移量。
    第五个参数:要从源数组中复制到目标数组元素的个数,一般情况下为目标数组的长度。
例:
    从A数组中复制元素到B数组?
    public class Practice {
        public static void main(String[] args){
            String[] A = {"H","e","l","l","o"};
            String[] B = new String[3];
            System.arraycopy(A, 0, B, 1, B.length - 1);
          for(int i = 0; i < B.length; i ++){
                 System.out.print(B[i] + " ");
            }
      }
    }
    运行结果为:null H e;
二、Array.Fill(数组名,值)此方法用于填充数组。
    例:
       现向已知数组A中填充值?
       public class Practice {
             public static void main(String[] args){
                   String[] A = new String[5];
                   Arrays.fill(A, "Hello");
                   for(int i = 0; i < A.length; i ++){
                 System.out.print(A[i] + " ");
              }
         }
       }
       运行结果为:
                  Hello Hello Hello Hello Hello
三、Array.equals(数组名A,数组名B),比较两个数组A、B是否相等,此方法针对所有基本类型与object都作了重载,例如比较两个数是否相等用Integer.equals()方法……,通过object.equals()方法比较数组是否相等,是基于内容的。
    例:
       三个已知数组的比较?
       public class Practice {
       public static void main(String[] args){
                 String[] A = {"1","2","3"};
               String[] B = {"一","二","三"};
                 String[] C = {"1","2","3"};
                 System.out.println(Arrays.equals(A, B));
                 System.out.println(Arrays.equals(A, C));
           }
       }
       运行结果为:false
                            true
四、Array.asList()此方法用于输出数组中的所有数.
    例:
       输出已知数组A中的所有数?
       public class Practice {
               public static void main(String[] args){
                       String[] A = {"H","e","l","l","o"};
                     System.out.println(Arrays.asList(A));
               }
       }
       运行结果为:
                  [H, e, l, l, o];
五、数组中的排序
    使用内置的排序方法,就可以对任意的基本类型数组排序,也可以对任意的对象数组进行排序,只要该对象实现了Comparable接口或具有相关联的Comparator接口
    例:
      已经数组String[] A = {"A","B","c","D","e","f","G","H"};现对数组A进行排序,要求忽略大小写排序?
      分析:String默认的排序方法,第一步是将大写字母开头的词均放在小写字母头的词的前面,然后才进行排序。
            如:String[] A = {"A","B","c","D","e","f","G","H"};
                 Arrays.sort(A);
                   System.out.println(Arrays.asList(A));
            运行结果为:[A, B, D, G, H, c, e, f];
      如果想忽略大小写,可以通过自定义排序方式来实现:
            如:
                public class Practice1 implements Comparator{  
                        public static void main(String[] args){
                               String[] A = {"A","B","c","D","e","f","G","H"};
                               Arrays.sort(A,new Practice1());
                               System.out.println(Arrays.asList(A));
                        }

                        public int compare(Object o1, Object o2) {
                               String s1 = (String)o1;
                               String s2 = (String)o2;
                               return s1.toLowerCase().compareTo(s2.toLowerCase());
                        }
                }
            运行结果为:[A, B, c, D, e, f, G, H];
六、使用Arrays.binarySearch()执行快速查找。
    例:快速查找数组A中的元素?
        public class Practice{  
                public static void main(String[] args){
                        String[] a = {"a","d","e","w","f"};
                      Arrays.sort(a);
                      System.out.println(Arrays.asList(a));
                        int index1 = Arrays.binarySearch(a, "f");
                        System.out.println("要查找的值存在的时候:" + index1);
                        int index2 = Arrays.binarySearch(a, "n");
                        index2 = -index2 - 1;
                        System.out.print("当不存在的时候输出该值最可能存在的位置:" + index2);
               }
        }  
    注意:不要对未排序的数组使用binarySearch();
七、Arrays.copyOf()用法,这个方法是将原数组快速复制成一个新数组。如果新数组的长度小于旧数组的长度,将截取一部分旧数组中的元素,复制给新数组,
    反之,如果大于旧数组的长度,则将以0,null,或false给予补充。
    例:快速复制数组?
     public class Practice{  
       public static void main(String[] args){
                 String[] a = {"a","d","e","w","f"};
                 String[] b = new String[4];
                 String[] c = new String[5];
                 String[] d = new String[6];
                 b = Arrays.copyOf(a, b.length);
                 c = Arrays.copyOf(a, c.length);
                 d = Arrays.copyOf(a, d.length);
             System.out.println("b数组的元素:" + Arrays.asList(b));
                 System.out.println("c数组的元素:" + Arrays.asList(c));
             System.out.println("d数组的元素:" + Arrays.asList(d));
      }
     }
     运行结果为:
                b数组的元素:[a, d, e, w]
               c数组的元素:[a, d, e, w, f]
                d数组的元素:[a, d, e, w, f, null]
八、Arrays.copyOfRange()用法,这个方法与前面介绍的Arrays.copyOf()的用法相似,下面来通过具体实例讲解。
    例:如何将原数组指定复制一个新数组?
     public class Practice{  
              public static void main(String[] args){
                       String[] a = {"a","d","e","w","f"};
                       String[] b = new String[4];
                       b = Arrays.copyOfRange(a, 2, 4);
                     System.out.println("b数组的元素:" + Arrays.asList(b));
            }
     }
    运行结果为:
               b数组的元素:[e, w];
    相信读者已知道其中用法了吧,type[] N = Arrays.copyofRange("原数组",i,j)就是复制原数组赋值给新的数组N,指定从索引i到j;

九、Arrays.deepToString()用法,这个方法的用法同Arrays.asList()的用法相似,此方法是为了将多维数组转换为字符串而设计的;
    下面通过例子来看一下它们的相同点。
    例:输出已知数组a中的元素。
   public class Practice{  
         public static void main(String[] args){
                String[] a = {"a","d","e","w","f"};
                    System.out.println("用Arrays.asList()方法输出:" + Arrays.asList(a));
                    System.out.println("用Arrays.deepToString()方法输出:" + Arrays.deepToString(a));;
            }
   }
    运行结果为:
              用Arrays.asList()方法输出:[a, d, e, w, f]。
            用Arrays.deepToString()方法输出:[a, d, e, w, f]。
十、Arrays.deepEquals()的用法。
    说明:此方法与 Arrays.equals(Object[],Object[]) 方法不同,此方法适用于任意深度的嵌套数组。
          如果两个数组引用均为 null,或者它们引用了包含相同元素数量的数组,并且两个数组中的所
          有相应元素对都是深层相等的,则认为这两个数组引用是深层相等的。
    例:已知三个三维数组间的比较。
        public class Practice{  
      public static void main(String[] args){
                 String[][][] d = new String[2][2][2];
                 d[1][1][1] = "a";
                 String[][][] e = new String[3][3][3];
                   e[1][1][1] = "a";
                    String[][][] f = new String[2][2][2];
                  f[1][1][1] = "a";
                    String[][][] g = new String[2][2][2];
                g[1][1][1] = "ab";
   
                  System.out.println("--------------------------");
                  System.out.println("输出equals()方法与deepEquals()方法的区别;");
                    System.out.println("数组d与数组f进行比较: " + d.equals(f));
                  System.out.println("数组d与数组f进行比较: " + Arrays.deepEquals(d, f));
                    System.out.println("--------------------------");
   
                 //下面输出比较结果
              System.out.println("=================================");
                System.out.println("数组d与数组e进行比较: " + Arrays.deepEquals(d, e));
                System.out.println("数组d与数组g进行比较: " + Arrays.deepEquals(d, g)); 
                  System.out.println("=================================");
         }
}
   运行结果为:
             --------------------------
   输出equals()方法与deepEquals()方法的区别;
   数组d与数组f进行比较: false
   数组d与数组f进行比较: true
   --------------------------
   =================================
  数组d与数组e进行比较: false
   数组d与数组g进行比较: false
   =================================
十一、Collections.reverseOrder()用法(反转自然的顺序);
      例:用除了循环外的另一方式逆向输出已知数组a?
         public class Practice{  
              public static void main(String[] args){
                       String[] a = {"a","b","c"};
                       Arrays.sort(a,Collections.reverseOrder());
                       System.out.println(Arrays.asList(a));   
                }
        }
      运行结果为:[c, b, a];


分享到:
评论

相关推荐

    java基础之数组常用操作总结(必看篇)

    下面小编就为大家带来一篇java基础之数组常用操作总结(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    实验5 JAVA常用类.doc

    本专栏主要为Java程序设计(基础)实验报告和Java程序设计(进阶)实验报告,基础篇有JAVA环境搭建、Java语言基础、方法和数组、面向对象基础、Java常用类、继承与接口、成员访问控制与异常、JavaFX程序设计、Java...

    一维数组总结,适合初学自学者

    一维数组的创建以及常用方法数组类型的介绍与总结,适合初学者,预习自学

    Java实现把两个数组合并为一个的方法总结

    主要介绍了Java实现把两个数组合并为一个的方法,结合实例形式总结分析了java常用的四种数组合并操作技巧,需要的朋友可以参考下

    javascript数组常用方法汇总

    本文为大家总结了javascript数组常用方法,具体内容如下 1、join()方法:  Array.join()方法将数组中所以元素都转化为字符串链接在一起,返回最后生成的字符串。也可以指定可选的字符串在生成的字符串中来分隔...

    Java数组常用排序算法实例小结

    主要介绍了Java数组常用排序算法,结合实例形式总结分析了java数组常用的4种排序算法,包括冒泡排序、数组递增排序、快速排序及选择排序,需要的朋友可以参考下

    Java基础知识点总结.docx

    Java数组与集合小结 305 递归 309 对象的序列化 310 Java两种线程类:Thread和Runnable 315 Java锁小结 321 java.util.concurrent.locks包下常用的类 326 NIO(New IO) 327 volatile详解 337 Java 8新特性 347 Java...

    javascript中数组(Array)对象和字符串(String)对象的常用方法总结

    本文实例总结了javascript中数组(Array)对象和字符串(String)对象的常用方法。分享给大家供大家参考,具体如下: 综述:笔者经常将数组的方法和字符串的方法混淆,这里写篇日志,做个区分 1.字符串对象 String是...

    java实验报告.docx

    实验三 Java 数组和方法应用 10 实验四 类和对象;类的继承和派生;多态性;接口;构造器应用 16 实验五 Java访问控制管理;封装类;内部类; 内存管理与垃圾收集 8 实验六 Java 异常处理的程序设计;Java 自定义...

    java基础知识总结.docx

    对java一些常用基础的总结,java基本知识,数组,java内存分配,方法总结,面向对象,常用API,常用集合

    实验9 Java输入输出流.doc

    本专栏主要为Java程序设计(基础)实验报告和Java程序设计(进阶)实验报告,基础篇有JAVA环境搭建、Java语言基础、方法和数组、面向对象基础、Java常用类、继承与接口、成员访问控制与异常、JavaFX程序设计、Java...

    java各知识点详细总结(毕向东笔记整理)

    java各知识点详细总结(毕向东笔记整理)。第一章:编程基础 3-11 第二章:数组 11 -31 第三章:面向对象程序开发 31 -74 第四章:异常机制 74 -89 第五章:多线程技术 89 -122122122 第六章:常用类 API 122API 122 ...

    java集合类知识总结--思维导图文件xmind

    java集合类知识总结--思维导图文件xmind xmind文件类型 总结了java常用集合相关问题 包括map、set、list、数组等

    Java后端面试问题整理.docx

    • 熟悉Java多线程并发中线程基本方法,线程池,线程生命周期,熟悉Java锁中常见锁分类(乐观/悲观锁、自旋锁、独/共享锁、可重入锁、公平/非公平锁、分段锁、偏向锁,轻/重量级锁)和基本的锁升级策略

    java 面试题 总结

    此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),...

    Java重点知识总结

    数组:一维数组 ,静态方法(结合第3章静态变量)特点 方法参数传递(传值、传递引用的区别) , 方法重载(同名、参数形式不同) 字符串(常量、与字符常量的区别、连接运算、例2.18) 。。。。。。。 。。。。 第...

    java oop总结

    Java面向对象编程概述 Java类定义 内部类和继承 继承的使用 异常处理 数组 Java常用类 集合类 泛型化的集合框架 使用Java的输入/输出类 Java GUI和Swing 事件委托模型.....的详细概述

    Java2游戏编程.pdf

    2.2.7 Java数据类型、数组和标识符需要记忆的要点 2.3 Java中的运算符 2.3.1 赋值运算符 2.3.2 比较运算符 2.3.3 算术运算符 2.3.4 自增和自减运算符 2.3.5 更多的整数运算符 2.3.6 使用点运算符 2.3.7 instanceof...

    java 异常总结

    当应用试图调用某类的某个方法,而该类的定义中没有该方法的定义时抛出该错误。 java.lang.OutOfMemoryError 内存不足错误。当可用内存不足以让Java虚拟机分配给一个对象时抛出该错误。 java.lang.StackOverflow...

Global site tag (gtag.js) - Google Analytics