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); } }