java数组常用的方法

来源:互联网 发布:威纶触摸屏编程实例 编辑:程序博客网 时间:2024/06/06 09:46

关于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();}@Testpublic void testArrayToStr(){int[] a = new int []{1,2,3,4,5,6};System.out.println(arrayToStr(a));}@Testpublic 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;}@Testpublic 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();}@Testpublic 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;}@Testpublic 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){//先判断两个传入的参数是否有Nullif(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;}@Testpublic 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,否则为falseif(temp==pArray[n]){flag = true;break;}}//如果有一个值不在父数组中,则标记结果就是false,推出最外层循环if(!flag){result = false;break;}}return result;}@Testpublic 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;}@Testpublic 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;}@Testpublic 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);}}