package com.hanchao.test;

import org.apache.commons.lang.ArrayUtils;

/**
 * @author liweihan (liweihan@sohu-inc.com)
 * @version 1.0 (2016年1月14日 下午3:24:59)
 */
public class ArrayUtilsTest {

	public static void main(String[] args) {
		
		/**
		 * 1.ArrayUtils.isEmpty(strs):判断数组是否为空, 不为空返回false, 为空true
		 */
		System.out.println(ArrayUtils.isEmpty(new String[]{"21","韩超"}));//false
		System.out.println(ArrayUtils.isEmpty(new String[]{""}));//false
		System.out.println(ArrayUtils.isEmpty(new String[]{null})); //false
		System.out.println(ArrayUtils.isEmpty(new String[]{}));//true
		
		/**
		 * 2.ArrayUtils.isSameLength(strs,strs2):判断两个数组长度是否相等,
		 * 长度相等返回true,否则返回false。相比较的两个数组类型必须相同
		 */
		System.out.println(ArrayUtils.isSameLength(new String[]{"21","韩超"}, new String[]{"22","中国"}));//true
		System.out.println(ArrayUtils.isSameLength(new String[]{"21","韩超"}, new String[]{"中国"}));//false
		
		/**
		 * 3.ArrayUtils.isSameType(strs,strs2):判断两个数组的类型是否相同,
		 * 	   相同返回true,否则返回false
		 */
		System.out.println(ArrayUtils.isSameType(new String[]{"21","是"},new Integer[]{3}));//false
		
		/**
		 * 4.ArrayUtils.isEquals(strs,strs2)判断两个数组是否相等
		 */
		System.out.println(ArrayUtils.isEquals(new String[]{"21","是"}, new String[]{"21","是"}));//true
		System.out.println(ArrayUtils.isEquals(new String[]{"21","是"}, new String[]{"22","是"}));//false
		
		/**
		 * 5.ArrayUtils.toString()将一个数组转换成String,用于打印
		 */
		System.out.println(ArrayUtils.toString(new String[]{"22","韩超"})); //{22,韩超}

		/**
		 * 6.ArrayUtils.clone赋值(克隆)数组
		 */
		Object[] s = ArrayUtils.clone(new Object[]{"33","yy"});
		System.out.println(ArrayUtils.toString(s));//{33,yy}
		
		/**
		 * 7..ArrayUtils.subarray截取子数组:根据起始索引startIndexInclusive到结束索引startIndexInclusive
		 */
		Object[] s1 = ArrayUtils.subarray(new Object[]{"33","yy","uu"},0,1);
		Object[] s2 = ArrayUtils.subarray(new Object[]{"33","yy","uu"},0,2);
		System.out.println(ArrayUtils.toString(s1)); //{33}
		System.out.println(ArrayUtils.toString(s2)); //{33,yy}
		
		/**
		 * 8.ArrayUtils.indexOf查询某个object在数组中的位置,可是指定起始搜索位置
		 */
		System.out.println(ArrayUtils.indexOf(new Object[]{"33","yy","uu"},"uu")); //2
		System.out.println(ArrayUtils.indexOf(new Object[]{"33","yy","uu"},"uu",2));//2
		System.out.println(ArrayUtils.indexOf(new Object[]{"33","yy","uu"},"uu",3));//-1
		
		/**
		 * 9..ArrayUtils.lastIndexOf反向查询某个object在数组中的位置,可以指定起始搜索位置
		 */
		System.out.println(ArrayUtils.lastIndexOf(new Object[]{"33","uu","yy","uu","aa"},"uu")); //3
		System.out.println(ArrayUtils.lastIndexOf(new Object[]{"33","uu","yy","uu","aa"},"uu",2));//1
		System.out.println(ArrayUtils.lastIndexOf(new Object[]{"33","uu","yy","uu","aa"},"uu",3));//3
		
		/**
		 * 10.ArrayUtils.contains查询某个object是否在数组中
		 */
		System.out.println(ArrayUtils.contains(new String[]{"1","2","3"}, "11"));//false
		System.out.println(ArrayUtils.contains(new String[]{"1","2","3"}, "1"));//true
		
		/**
		 * 11.ArrayUtils.reverse反转数组
		 */
		String[] ss = new String[]{"22","yy"};
		ArrayUtils.reverse(ss);
		System.out.println(ArrayUtils.toString(ss));//{yy,22}
		
		
		/**
		 * 12.ArrayUtils.add添加一object到数组
		 */
		String[] t = {"xx","yy"};
		String[] t_new = (String[]) ArrayUtils.add(t, "jj");
		System.out.println(ArrayUtils.toString(t_new));//{xx,yy,jj}
		
		/**
		 * 13.ArrayUtils.addAll合并两个数组
		 */
		String[] a1 = new String[]{"xx","yy"};
		String[] a2 = new String[]{"zz"};
		String[] a3 = {"yy","tt"};
		
		String[] a12 = (String[]) ArrayUtils.addAll(a1, a2);
		String[] a13 = (String[]) ArrayUtils.addAll(a1, a3);
		
		System.out.println(ArrayUtils.toString(a12));//{xx,yy,zz}
		System.out.println(ArrayUtils.toString(a13));//{xx,yy,yy,tt}
		
		
		/**
		 * 14.ArrayUtils.remove删除数组某个位置的元素
		 */
		String[] r1 = new String[]{"aa","bb","cc","dd"};
		String[] rResult = (String[]) ArrayUtils.remove(r1, 1);
		System.out.println(ArrayUtils.toString(rResult));//{aa,cc,dd}
		
		/**
		 * 15.ArrayUtils.removeElement删除数组中某个对象
		 */
		String[] r2 = new String[]{"aa","bb","cc","dd"};
		String[] r2Result = (String[]) ArrayUtils.removeElement(r2, "cc");
		System.out.println(ArrayUtils.toString(r2Result));//{aa,bb,dd}
		
	}
	
}