java集合復制和反轉


  • 1.for循環方法:
  • 2.System.arraycopy()方法:
  • 3.Arrays.copyOf()方法:
  • 4.Object.clone()方法:

  

+ View code
/**
 * @author zhengbinMac
 */
public class Test {
    public static void main(String[] args) {
        int[] array1 = {1,2,3,4,5};
        // 1.通過for循環
        int[] array2 = new int[5];
        for(int i = 0;i < array1.length;i++) {
            array2[i] = array1[i];
        }
        for(int i = 0;i < array2.length;i++) {
            System.out.print(array2[i]);
        }
        System.out.println();
        //2.通過System.arraycopy()
        int[] array3 = new int[5];
        System.arraycopy(array1, 0, array3, 0, 5);
        for (int i = 0; i < array3.length; i++) {
            System.out.print(array3[i]);
        }
        System.out.println();
        //3.通過Arrays.copyOf()
        int[] array4 = new int[5];
        array4 = Arrays.copyOf(array1, 5);
        for (int i = 0; i < array4.length; i++) {
            System.out.print(array4[i]);
        }
        System.out.println();
        //4.通過Object.clone()
        int[] array5 = new int[5];
        array5 = array4.clone();
        for (int i = 0; i < array5.length; i++) {
            System.out.print(array5[i]);
        }
    }
}

1.for循環方法:

  代碼靈活,但效率低。

2.System.arraycopy()方法:

  通過源碼可以看到,其為native方法,即原生態方法。自然效率更高。

public static native void arraycopy(Object src,  int  srcPos,
                                         Object dest, int destPos,
                                       int length);

3.Arrays.copyOf()方法:

  同樣看源碼,它的實現還是基於System.arraycopy(),所以效率自然低於System.arraycpoy()。

+ View code
public static int[] copyOf(int[] original, int newLength) {
  int[] copy = new int[newLength];
  System.arraycopy(original, 0, copy, 0,
    Math.min(original.length, newLength));
  return copy;
}

4.Object.clone()方法:

  從源碼來看同樣也是native方法,但返回為Object類型,所以賦值時將發生強轉,所以效率不如之前兩種。

protected native Object clone() throws CloneNotSupportedException;

 

 

 

如何逆轉數組列表?

解決方法

下面的示例反轉使用Collections.reverse(ArrayList)方法的數組列表。

import java.util.ArrayList;
import java.util.Collections;

public class Main {
   public static void main(String[] args) {
      ArrayList arrayList = new ArrayList();
      arrayList.add("A");
      arrayList.add("B");
      arrayList.add("C");
      arrayList.add("D");
      arrayList.add("E");
      System.out.println("Before Reverse Order: " + arrayList);
      Collections.reverse(arrayList);
      System.out.println("After Reverse Order: " + arrayList);
   }
}

結果

上面的代碼示例將產生以下結果。

Before Reverse Order: [A, B, C, D, E]
After Reverse Order: [E, D, C, B, A]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM