java数组惯用的方法

java数组常用的方法

关于java中数组常用的方法

 

package hb.array;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

public class ArratUtils {

	/**
	 * 将数组的内容显示出来
	 * @param array
	 * @return
	 */
	public static String arrayToStr(int[]array){
		if(array==null||array.length==0){
			return "";
		}
		StringBuffer sb = new StringBuffer();
		sb.append("[");
		for(int i=0;i<array.length;i++){
			sb.append(array[i]);
			if(i<array.length-1){
				sb.append(",");
			}
		}
		sb.append("]");
		return sb.toString();
	}
	@Test
	public void testArrayToStr(){
		int[] a = new int []{1,2,3,4,5,6};
		System.out.println(arrayToStr(a));
	}
	@Test
	public void testArrayToStr2(){
		int[] a = new int []{99,939,32,1,2,324,3,4,5,6};
		String result = java.util.Arrays.toString(a);
		System.out.println(result);
	}
	
	/**
	 * 对传入的数组排序
	 * @param arr
	 * @return
	 */
	public static int[] sortIntArray(int[]arr){
		java.util.Arrays.sort(arr);
		return arr;
	}
	@Test
	public void testSortIntArray(){
		int[] a = new int []{99,939,32,1,2,324,3,4,5,6};
		a = sortIntArray(a);
		System.out.println(arrayToStr(a));
	}
	
	/**
	 * 将ArrayList对象转换为数组对象
	 * @param list
	 * @return
	 */
	public static Object[] arrayListToArray(ArrayList list){
		return list.toArray();
	}
	@Test
	public void testArrayListToString(){
		ArrayList<Integer> list = new ArrayList<Integer>();
		for(int i = 0; i < 9; i++){
			list.add(new Integer(i));
		}
		Object[] a = arrayListToArray(list);
		for(int m=0;m<a.length;m++){
			System.out.println(a[m].toString());
		}
	}
	
//	public static List arrayToList(Object[] o){
//		
//		return java.util.Arrays.asList(o);
//	}
//	@Test
//	public void test(){
//		Integer a[] = new Integer[]{3,4,5,6};
//		List l = arrayToList(a);
//	}
	
	/**
	 * 取数组为int类型的公共部分,即获得两个数组的交集
	 * @param firstArray
	 * @param secondeArray
	 * @return
	 */
	public static int[] intArrayIntersect(int[]firstArray,int[]secondeArray){
		int[] result = null;
		ArrayList list = new ArrayList();
		if(firstArray==null || secondeArray==null){
			return null;
		}
		int temp=0;
		for(int i = 0; i< firstArray.length; i++){
			temp = firstArray[i];
			for(int j = 0; j< secondeArray.length; j++){
				if(temp==secondeArray[j]){
					list.add(temp);
				}
			}
		}
		
		if(list != null && list.size()>0){
			result = new int[list.size()];
			for(int k = 0; k < list.size(); k++){
				result[k]=(Integer)list.get(k);
			}
		}
		return result;
	}
	@Test
	public void testIntArrayIntersect(){
		//初始化数据的两种方式
		int a[] = new int[]{3,4,5,6};
		int b[] = new int[6];
		for(int i=0;i<6;i++){
			b[i]=i;
		}
		String result = arrayToStr(intArrayIntersect(a,b));
		System.out.println(result);
	}
	
	/**
	 * 数组是int类型,取两个数组的并集
	 * @param firstArray
	 * @param secondArray
	 * @return
	 */
	public static int[] intArrayUnit(int[] firstArray,int[] secondArray){
		//先判断两个传入的参数是否有Null
		if(firstArray==null)	return secondArray;
		if(secondArray==null)	return firstArray;
		
		int[] result = null;
		ArrayList list = new ArrayList();
		for(int i=0;i<firstArray.length;i++){
			list.add(firstArray[i]);
		}
		int temp;
		for(int n=0;n<secondArray.length;n++){
			temp = secondArray[n];
			int j=0;
			int length = firstArray.length;
			for(;j<length;j++){
				if(temp==firstArray[j]){
					break;
				}
			}
			if(j==length){
				list.add(temp);
			}
		}
		
		if(list!=null && list.size()>0){
			int listSize = list.size();
			result = new int[listSize];
			for(int m = 0; m < listSize; m++){
				result[m]=(Integer)list.get(m);
			}
		}
		return result;
	}
	@Test
	public void testIntArrayUnit(){
		//初始化数据的两种方式
		int a[] = new int[]{3,4,5,6};
		int b[] = new int[6];
		for(int i=0;i<6;i++){
			b[i]=i;
		}
		String result = arrayToStr(intArrayUnit(a,b));
		System.out.println(result);
	}
	
	/**
	 * 判断主数组中是否含有子数组
	 * @param pArray 主数组
	 * @param sArray 子数组
	 * @return
	 */
	public static boolean isHasElement(int[] pArray, int[] sArray){
		boolean result = true;
		if(pArray==null || sArray.length < 0 || sArray.length>pArray.length){
			return false;
		}
		for(int i=0;i<sArray.length;i++){
			int temp = sArray[i];
			int n=0;
			boolean flag = false;
			for(;n<pArray.length;n++){
				//如果当前值存在于父数组中,则标记为true,否则为false
				if(temp==pArray[n]){
					flag = true;
					break;
				}
			}
			//如果有一个值不在父数组中,则标记结果就是false,推出最外层循环
			if(!flag){
				result = false;
				break;
			}
		}
		return result;
	}
	@Test
	public void testisHasElement(){
		int a[] = new int[]{3,4,5,6};
		int b[] = new int[6];
		for(int i=0;i<6;i++){
			b[i]=i;
		}
		int parent[] = new int[]{5,6,7,8,9,99};
		int son[] = new int[]{6,7,8};
		System.out.println(isHasElement(a,b));
		System.out.println(isHasElement(parent,son));
		System.out.println(isHasElement(son,parent));
		System.out.println(isHasElement(son,son));
		System.out.println(isHasElement(new int[8],son));
		System.out.println(isHasElement(parent,new int[1]));
	}
	
	/**
	 * 取子数组以外的内容
	 * @param parent
	 * @param son
	 * @return
	 */
	public static int[] intArraySonOther(int[] parent,int[] son){
		int[] result = null;
		if(isHasElement(parent,son)){
			ArrayList list = new ArrayList();
			for(int i=0;i<parent.length;i++){
				int temp = parent[i];
				int n=0;
				boolean flag=true;
				for(;n<son.length;n++){
					if(temp == son[n]){
						flag = false;
						break;
					}
				}
				if(flag){
					list.add(temp);
				}
			}
			if(list!=null || list.size()>0){
				result = new int[list.size()];
				for(int k = 0; k < list.size(); k++){
					result[k] = (Integer)list.get(k);
				}
			}
		}
		return result;
	}
	@Test
	public void testIntArraySonOther(){
		int parent[] = new int[]{5,6,7,8,9,99};
		int son[] = new int[]{6,7,8};
		int[] result = intArraySonOther(parent,son);
		System.out.println(arrayToStr(result));
	}
	
	
	/**
	 * 取出在第一个数组中出现过在第二个数组中没出现过的元素
	 * @param firstArray
	 * @param secondArray
	 * @return
	 */
	public static int[] intArrayExceptent(int[] firstArray,int[] secondArray){
		//先取出两个表的交集
		int[] arr = intArrayIntersect(firstArray,secondArray);
		int[] temp = intArraySonOther(firstArray,arr);
		return temp;
	}
	@Test
	public void testIntArrayExceptent(){
		int parent[] = new int[]{5,6,7,8,9,99};
		int son[] = new int[]{6,7,8,66};
		int[] result = intArrayExceptent(parent,son);
//		int[] result = intArrayExceptent(son,parent);
		String str = java.util.Arrays.toString(result);
		System.out.println(str);
	}
}