Java Arrays/数组实例

如何对数组进行排序和搜索里面的元素?

package com.xyc.arraysInstance;
import java.util.Arrays;

/**
 * 
 * @ClassName:  MainClass   
 * @Description:如何对数组进行排序和搜索里面的元素?
 * @author: xyc 
 * @date:   2017年2月10日 下午12:57:54   
 *
 */
public class MainClass {
    
   public static void main(String args[]) throws Exception {
       
      int array[] = { 2, 5, -2, 6, -3, 8, 0, -7, -9, 4 };
      Arrays.sort(array);
      printArray("Sorted array", array);
      
      //binarySearch方法搜索指定的数组 使用二进制搜索算法来指定值。该数组必须在进行此调用之前进行排序。如果不排序,则结果是不确定的。
      //此方法返回搜索键的索引,如果它包含在数组中,否则它返回(- (插入点)- 1)。
      
      //如果可以查找到该指定值,则返回该指定值在数组中的索引
      //如果没找到该指定值,则将返回该指定值在 数组插入点(排序插入合适的位置)的负位置减1(- (插入点)- 1)
      int index = Arrays.binarySearch(array, 0);
      System.out.println("Found 2 @ " + index);
   }
   
   private static void printArray(String message, int array[]) {
      System.out.println(message + ": [length: " + array.length + "]");
      for (int i = 0; i < array.length; i++) {
         if(i != 0){
            System.out.print(", ");
         }
         System.out.print(array[i]);                     
      }
      System.out.println();
   }
   
}
View Code

上面的代码示例将产生以下结果:

Sorted array: [length: 10]
-9, -7, -3, -2, 0, 2, 4, 5, 6, 8
Found 2 @ 4

 

如何排序数组,并插入元素到数组中?

package com.xyc.arraysInstance;

import java.util.Arrays;

/**
 * 
 * @ClassName:  InsertArray   
 * @Description:如何排序数组,并插入元素到数组中?
 * @author: xyc 
 * @date:   2017年2月10日 下午1:44:23   
 *
 */
public class InsertArray {

    public static void main(String args[]) throws Exception {

        int array[] = { 2, 5, -2, 6, -3, 8, 0, -7, -9, 4 };
        
        //排序数组
        Arrays.sort(array);
        printArray("Sorted array", array);
        
        //二分法查找数组
        int index = Arrays.binarySearch(array, 1);
        System.out.println("Didn't find 1 @ " + index);
        
        int newIndex = -index - 1;
    
        array = insertElement(array, 1, newIndex);
        
        printArray("With 1 added", array);

    }

    /**
     * 
     * @Title: printArray   
     * @Description: 按照指定方式打印数组
     * @param: @param message
     * @param: @param array      
     * @return: void      
     * @throws
     */
    private static void printArray(String message, int array[]) {

        System.out.println(message + ": [length: " + array.length + "]");
        for (int i = 0; i < array.length; i++) {
            if (i != 0) {
                System.out.print(", ");
            }
            System.out.print(array[i]);
        }
        System.out.println();

    }

    //array 1 5
    private static int[] insertElement(int original[], int element, int index) {

        int length = original.length;
        int destination[] = new int[length + 1];//11
        
        
        //System.arraycopy(src, srcPos, dest, destPos, length);
        //src:源数组;    
        //srcPos:源数组要复制的起始位置;
        //dest:目的数组;    
        //destPos:目的数组放置的起始位置;    
        //length:复制的长度。
        System.arraycopy(original, 0, destination, 0, index);
        //destination [-9,-7,-3,-2,0,0,0,0,0,0,0]
        
        destination[index] = element;
        System.arraycopy(original, index, destination, index + 1, length - index);
        return destination;

    }
}
View Code

上面的代码示例将产生以下结果:

Sorted array: [length: 10]
-9, -7, -3, -2, 0, 2, 4, 5, 6, 8
Didn't find 1 @ -6
With 1 added: [length: 11]
-9, -7, -3, -2, 0, 1, 2, 4, 5, 6, 8

  

如何确定一个二维数组的上限或长度?

package com.xyc.arraysInstance;

/**
 * 
 * @ClassName:  Main   
 * @Description:如何确定一个二维数组的上限或长度?
 * @author: xyc 
 * @date:   2017年2月10日 下午2:06:56   
 *
 */
public class ArrayLength {
    
   public static void main(String args[]) {
       
      String[][] data = new String[2][5];
      //一维数组长度
      System.out.println("Dimension 1: " + data.length);
      //二维长度
      System.out.println("Dimension 2: " + data[0].length);
      
   }
   
}
View Code

上面的代码示例将产生以下结果:

Dimension 1: 2
Dimension 2: 5

  

如何逆转数组列表?

package com.xyc.arraysInstance;
import java.util.ArrayList;
import java.util.Collections;

/**
 * 
 * @ClassName:  ReverseArray   
 * @Description:如何逆转数组列表?
 * @author: xyc 
 * @date:   2017年2月10日 下午2:12:22   
 *
 */
public class ReverseArray {
    
   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);
      //使用reverse方法可以根据元素的自然顺序 对指定列表按降序进行排序。
      Collections.reverse(arrayList);
      System.out.println("After Reverse Order: " + arrayList);
      
   }
}
View Code

上面的代码示例将产生以下结果:

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

 

如何遍历数组

package com.xyc.arraysInstance;

/**
 * 
 * @ClassName:  Welcome   
 * @Description:如何遍历数组
 * @author: xyc 
 * @date:   2017年2月10日 下午2:14:02   
 *
 */
public class ErgodicArray {
    
   public static void main(String[] args){
       
      String[] greeting = new String[3];
      greeting[0] = "This is the greeting";
      greeting[1] = "for all the readers from";
      greeting[2] = "Java Source .";
      
      //for 循环遍历
      for (int i = 0; i < greeting.length; i++){
         System.out.println(greeting[i]);
      }
      
      //foreach 遍历    ,不能通过指定索引获取指定数组元素
      for (String string : greeting) {
        System.out.println(string);
    }
      
   }
}
View Code
This is the greeting
for all the readers from
Java Source .
This is the greeting
for all the readers from
Java Source .

  

如何搜索数组中最小和最大元素?

package com.xyc.arraysInstance;
import java.util.Arrays;
import java.util.Collections;

/**
 * 
 * @ClassName:  Main   
 * @Description:如何搜索数组中最小和最大元素?
 * @author: xyc 
 * @date:   2017年2月10日 下午2:21:15   
 *
 */
public class GetArrayMaxAndMin {
    
   public static void main(String[] args) {
       
      Integer[] numbers = { 8, 2, 7, 1, 4, 9, 5};
      
      //先将数据转为集合,之后通过集合方法获取最大最小值
      int min = (int) Collections.min(Arrays.asList(numbers));
      int max = (int) Collections.max(Arrays.asList(numbers));
      
      System.out.println("Min number: " + min);
      System.out.println("Max number: " + max);
      
   }
}
View Code

上面的代码示例将产生以下结果:

Min number: 1
Max number: 9

  

如何合并两个数组?   

package com.xyc.arraysInstance;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 
 * @ClassName:  MergeArray   
 * @Description:如何合并两个数组?   
 * @author: xyc 
 * @date:   2017年2月10日 下午2:26:29   
 *
 */
public class MergeArray {
    
   public static void main(String args[]) {
       
      String a[] = { "A", "E", "I" };
      String b[] = { "O", "U" };
      
      //合并数组,将数据转换为集合之后通过合并集合来完成,最后再将合并后的集合转为数组
      List list = new ArrayList(Arrays.asList(a));
      list.addAll(Arrays.asList(b));
      Object[] c = list.toArray();
      
      System.out.println(Arrays.toString(c));
      
   }
}
View Code

上面的代码示例将产生以下结果:

[A, E, I, O, U]

  

如何填充(初始化)数组?

package com.xyc.arraysInstance;
import java.util.*;

/**
 * 
 * @ClassName:  FillTest   
 * @Description:如何填充(初始化)数组?
 * @author: xyc 
 * @date:   2017年2月10日 下午2:29:20   
 *
 */
public class FillTest {
    
   public static void main(String args[]) {
       
      int array[] = new int[6];
      
      //java.util.Arrays.fill(int[] a, int val) 分配方法指定的int值给指定的int型数组的每个元素。
      //a -- 这是要填充的数组。
      //val -- 这是要被存储在该数组中的所有元素的值。
      Arrays.fill(array, 100);
      
      for (int i=0, n=array.length; i < n; i++) {
         System.out.println(array[i]);
      }
      System.out.println();
      
      //java.util.Arrays.fill(int[] a, int fromIndex, int toIndex, int val)
      //a -- 这是要填充的数组
      //fromIndex -- 这是第一个元素(包括)到填充有指定的值的索引
      //toIndex -- 这是最后一个元素(不含)以填充指定值的索引
      //val -- 这是要被存储在该数组中的所有元素的值
      //3~6 个索引处被50填充
      Arrays.fill(array, 3, 6, 50);
      for (int i=0, n=array.length; i< n; i++) {
         System.out.println(array[i]);
      }
      
   }
}
View Code

上面的代码示例将产生以下结果:

100
100
100
100
100
100

100
100
100
50
50
50

  

如何初始化后延长一个数组? 

package com.xyc.arraysInstance;

/**
 * 
 * @ClassName:  Main   
 * @Description:如何初始化后延长一个数组?
 * @author: xyc 
 * @date:   2017年2月10日 下午2:41:31   
 *
 */
public class ExtendArray {
    
   public static void main(String[] args) {
       
      String[] names = new String[] { "A", "B", "C" };
      String[] extended = new String[5];
      
      extended[3] = "D";
      extended[4] = "E";
      
      System.arraycopy(names, 0, extended, 0, names.length);
      
      for (String str : extended){
         System.out.println(str);
      }
      
   }
}
View Code

上面的代码示例将产生以下结果:

A
B
C
D
E

 

如何删除数组中的一个元素? 

package com.xyc.arraysInstance;
import java.util.ArrayList;

/**
 * 
 * @ClassName:  Main   
 * @Description:如何删除数组中的一个元素?
 * @author: xyc 
 * @date:   2017年2月10日 下午2:47:54   
 *
 */
public class Main {
    
   public static void main(String[] args)  {
       
      ArrayList objArray = new ArrayList();
      objArray.clear();
      
      //java.util.ArrayList.add(int index, E elemen) 方法将指定的元素E在此列表中的指定位置
      //index -- 在该指定的索引的元素将被插入。
      //element -- 要插入的元素。
      objArray.add(0,"0th element");
      objArray.add(1,"1st element");
      objArray.add(2,"2nd element");
      
      System.out.println("Array before removing an element"+objArray);
      objArray.remove(1);
      objArray.remove("0th element");
      System.out.println("Array after removing an element"+objArray);
      
   }
}
View Code

上面的代码示例将产生以下结果:

Array before removing an element[0th element, 1st element, 2nd element]
Array after removing an element[2nd element]

  

如何从一个数组中删除另一个数组?  

package com.xyc.arraysInstance;
import java.util.ArrayList;
/**
 * 
 * @ClassName:  RemoveArray   
 * @Description:如何从一个数组中删除另一个数组?
 * @author: xyc 
 * @date:   2017年2月10日 下午2:59:41   
 *
 */
public class RemoveArray {
    
   public static void main(String[] args)  {
       
      ArrayList objArray = new ArrayList();
      ArrayList objArray2 = new ArrayList();
      
      objArray2.add(0,"common1");
      objArray2.add(1,"common2");
      objArray2.add(2,"notcommon");
      objArray2.add(3,"notcommon1");
      
      objArray.add(0,"common1");
      objArray.add(1,"common2");
      objArray.add(2,"notcommon2");
      
      System.out.println("Array elements of array1" +objArray);
      System.out.println("Array elements of array2" +objArray2);
      
      //从objArray列表中移除指定objArray2中包含的其所有元素
      objArray.removeAll(objArray2);
      System.out.println("Array1 after removing array2 from array1"+objArray);
      
   }
   
}
View Code

上面的代码示例将产生以下结果:

Array elements of array1[common1, common2, notcommon2]
Array elements of array2[common1, common2, notcommon, notcommon1]
Array1 after removing array2 from array1[notcommon2]

  

如何查找从数组中的公共元素?   

package com.xyc.arraysInstance;
import java.util.ArrayList;

/**
 * 
 * @ClassName:  ArrayPubllicElement   
 * @Description:如何查找从数组中的公共元素?   
 * @author: xyc 
 * @date:   2017年2月10日 下午3:05:34   
 *
 */
public class ArrayPubllicElement {
    
   public static void main(String[] args)  {
       
      ArrayList objArray = new ArrayList();
      ArrayList objArray2 = new ArrayList();
      
      objArray2.add(0,"common1");
      objArray2.add(1,"common2");
      objArray2.add(2,"notcommon");
      objArray2.add(3,"notcommon1");
      
      objArray.add(0,"common1");
      objArray.add(1,"common2");
      objArray.add(2,"notcommon2");
      
      System.out.println("Array elements of array1"+objArray);
      System.out.println("Array elements of array2"+objArray2);
      
      objArray.retainAll(objArray2);
      
      System.out.println("Array1 after retaining common elements of array2 & array1"+objArray);
   }
}
View Code

上面的代码示例将产生以下结果:

Array elements of array1[common1, common2, notcommon2]
Array elements of array2[common1, common2, notcommon, notcommon1]
Array1 after retaining common elements of array2 & array1[common1, common2]

  

如何在Array查找一个对象或一个字符串? 

package com.xyc.arraysInstance;
import java.util.ArrayList;

/**
 * 
 * @ClassName:  Main   
 * @Description:如何在Array查找一个对象或一个字符串? 
 * @author: xyc 
 * @date:   2017年2月10日 下午3:06:58   
 *
 */
public class ArrayGetObjectOrString {
   public static void main(String[] args)  {
       
      ArrayList objArray = new ArrayList();
      ArrayList objArray2 = new ArrayList();
      
      objArray2.add(0,"common1");
      objArray2.add(1,"common2");
      objArray2.add(2,"notcommon");
      objArray2.add(3,"notcommon1");
      
      objArray.add(0,"common1");
      objArray.add(1,"common2");
      
      System.out.println("Array elements of array1"+objArray);
      System.out.println("Array elements of array2"+objArray2);
      
      //objArray集合数组里面是否存在common1元素
      System.out.println("Array 1 contains String common2?? "+objArray.contains("common1"));
      //objArray2 是否包含数组 objArray
      System.out.println("Array 2 contains Array1?? "+objArray2.contains(objArray) );
      
   }
}
View Code

上面的代码示例将产生以下结果:

Array elements of array1[common1, common2]
Array elements of array2[common1, common2, notcommon, notcommon1]
Array 1 contains String common2?? true
Array 2 contains Array1?? false

  

如何检查两个数组是否相等?

package com.xyc.arraysInstance;
import java.util.Arrays;

/**
 * 
 * @ClassName:  ArrayIsEq   
 * @Description:如何检查两个数组是否相等?
 * @author: xyc 
 * @date:   2017年2月10日 下午3:15:56   
 *
 */
public class ArrayIsEq {
    
   public static void main(String[] args) throws Exception {
       
      int[] ary = {1,2,3,4,5,6};
      int[] ary1 = {1,2,3,4,5,6};
      int[] ary2 = {1,2,3,4};
      
      System.out.println("Is array 1 equal to array 2?? "+Arrays.equals(ary, ary1));
      System.out.println("Is array 1 equal to array 3?? "+Arrays.equals(ary, ary2));
      
   }
}
View Code

上面的代码示例将产生以下结果:

Is array 1 equal to array 2?? true
Is array 1 equal to array 3?? false

  

 

posted on 2017-02-10 12:56  天道|酬勤  阅读(245)  评论(0编辑  收藏  举报

导航