java数组常用的方法

原创 2013年12月04日 09:59:15

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

 

 

Java:数组工具类Arrays类的常用方法的用法及代码

Arrays类是JDK提供的专门用于操作数组的工具类,位于java.util包中。 用Arrays类的方法操作数组,无需自己编码。 Arrays类的常用方法: 1、boolean equals(ar...
  • xuehyunyu
  • xuehyunyu
  • 2017年08月04日 22:16
  • 1259

学Java必看:Java最常用方法总结(ImportNew年度好文)

(ImportNew年度好文,代码实例,一看即懂,分享才能进步,让更多的人看到!) 实现:equals() hashCode() compareTo() clone() 应用:String...
  • zhangliangzi
  • zhangliangzi
  • 2016年04月04日 18:33
  • 3574

java中的数组集合常用的遍历方法

1. for循环 2. forEach循环 3. Iterator迭代器 4. Enumeration迭代器 /*  数组,集合的遍历方式: * */ /* 1....
  • IOS_fresh_monkey
  • IOS_fresh_monkey
  • 2017年01月21日 15:32
  • 831

javascript数组的定义及其属性和方法的使用

数组 7.1数组的概念 案例:计算5名学生的平均成绩  var a1,a2,a3,a4,a5;     a1 = Number(prompt("请输入分数"));     a2 = Numb...
  • csdn_wpno1
  • csdn_wpno1
  • 2017年08月02日 20:29
  • 170

前端之数组的常见的22中方法

// 1.length 返回数组的长度 var arr = [1, 2, 3, 4]; console.log(arr) // 4 // 2.push() 功能:向数组的末尾添加一个或更多元素...
  • wo_liuxiangyu
  • wo_liuxiangyu
  • 2018年01月12日 15:33
  • 34

Java数组冒泡,选择,插入三种常用排序法及自带的快速排序法

int[] arr = { 4, 9, 8, 7, 8, 5, 1, 9, 88 };bubbleSort(arr);// selectSort(arr);// insertSort(arr);Sys...
  • baidu_33430214
  • baidu_33430214
  • 2017年03月23日 18:12
  • 213

java基础之常用类的方法

Object 1.是类层次结构的根类,所有类都直接或间接的继承自object类。 2.要掌握的方法 A:toString()  返回对象的字符串表示  例 student [name ...
  • jian93121
  • jian93121
  • 2016年08月11日 22:13
  • 1186

访问数组元素的三种方法

访问数组元素的三种方法 1,通过下标来找元素 #include main() {     int a[5];     int i;     for(i=0;i     scanf("...
  • qq_34638292
  • qq_34638292
  • 2016年10月28日 22:04
  • 109

Java数组反转的方法

反转数组的操作有一些工具类给出了实现,如org.apache.commons.lang3.ArrayUtils.reverse()其他集合类的反转Collections.reverse(ArrayLi...
  • Goskalrie
  • Goskalrie
  • 2016年09月27日 17:13
  • 3196

java API中常用方法

java.util.Objects类    since 1.7 public static T requireNonNull(T obj) //此方法设计用来在方法或构造方法中验证参数引用是否...
  • u013115610
  • u013115610
  • 2017年04月25日 11:46
  • 615
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java数组常用的方法
举报原因:
原因补充:

(最多只允许输入30个字)