zoukankan      html  css  js  c++  java
  • org.apache.commons.lang3.ArrayUtils 学习笔记

    package com.nihaorz.model;
    
    /**
     * @作者 王睿
     * @时间 2016-5-17 上午10:05:17
     *
     */
    public class Person {
    	private String id;
    	private String name;
    	private Integer age;
    	public String getId() {
    		return id;
    	}
    	public void setId(String id) {
    		this.id = id;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public Integer getAge() {
    		return age;
    	}
    	public void setAge(Integer age) {
    		this.age = age;
    	}
    	@Override
    	public String toString() {
    		return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
    	}
    	
    }
    
    import java.util.Iterator;
    import java.util.Map;
    
    import org.apache.commons.lang3.ArrayUtils;
    import org.junit.Test;
    
    import com.nihaorz.model.Person;
    
    
    /**
     * @作者 王睿
     * @时间 2016-5-17 上午9:30:36 ArrayUtilsTest 使用 org.apache.commons.lang3.ArrayUtils
     *     对象完成数组的打印、克隆、查找、删除、倒序、分割以及值型/对象数组集合之间的转换等常用操作
     */
    public class ArrayUtilsTest {
    	
    	/**
    	 * 测试类统一获取Person数组方法
    	 * @return
    	 */
    	private Person[] getPP(){
    		Person p = new Person();
    		p.setId("1001");
    		p.setName("王睿");
    		p.setAge(27);
    		Person p1 = new Person();
    		p1.setId("1002");
    		p1.setName("钱青芝");
    		p1.setAge(27);
    		Person p2 = new Person();
    		p2.setId("1003");
    		p2.setName("王啸");
    		p2.setAge(30);
    		Person p3 = new Person();
    		p3.setId("1004");
    		p3.setName("胡曼琪");
    		p3.setAge(10);
    		Person[] pp = new Person[]{p,p1,p2,p3};
    		return pp;
    	}
    	
    	/**
    	 * 测试类统一打印方法
    	 * @param objs
    	 */
    	private void printArray(Object objs){
    		System.out.println(ArrayUtils.toString(objs));
    	}
    	
    	/**
    	 * ArrayUtils.toString
    	 * POJO对象数组直接toString
    	 * 二维数组toString
    	 */
    	@Test
    	public void _toString(){
    		Person[] pp = getPP();
    		printArray(pp[0]);
    		printArray(pp);
    		int[][] intArray2 = { { 1, 2 }, { 2, 4 }, { 3, 8 }, { 4, 16 } };
    		printArray(intArray2);
    		Object[][] notAMap = { { "A", new Double(100) },
    				{ "B", new Double(80) }, { "C", new Double(60) },
    				{ "D", new Double(40) }, { "E", new Double(20) } };
    		printArray(notAMap);
    	}
    
    	/**
    	 * ArrayUtils.clone
    	 * 数组对象克隆方法
    	 */
    	@Test
    	public void _clone(){
    		Person[] pp = getPP();
    		Person[] pp1 = ArrayUtils.clone(pp);
    		printArray(pp1);
    	}
    
    	/**
    	 * ArrayUtils.indexOf
    	 * 返回元素在数组中第一次出现的位置,如果未找到或查询的参数是null即返回-1
    	 */
    	@Test
    	public void indexOf(){
    		double[] arr = {1.23,2.34,3.45,4.56,5.67,6.78,7.89,8.90,4.56};
    		int result = ArrayUtils.indexOf(arr, 4.56);
    		System.out.println(result);
    		String[] arr2 = {"wangrui", "wangcheng", "钱青芝","钱青芝"};
    		System.out.println(ArrayUtils.indexOf(arr2, "钱青芝"));
    	}
    	
    	/**
    	 * ArrayUtils.lastIndexOf
    	 * 返回元素在数组中最后一次出现的位置,如果未找到或查询的参数是null即返回-1
    	 */
    	@Test
    	public void lastIndexOf(){
    		double[] arr = {1.23,2.34,3.45,4.56,5.67,6.78,7.89,8.90,4.56};
    		int result = ArrayUtils.lastIndexOf(arr, 4.56);
    		System.out.println(result);
    		String[] arr2 = {"wangrui", "wangcheng", "钱青芝","钱青芝"};
    		System.out.println(ArrayUtils.lastIndexOf(arr2, "钱青芝"));
    		System.out.println(ArrayUtils.lastIndexOf(arr2, null));
    	}
    	
    	/**
    	 * ArrayUtils.contains
    	 * 指定数组中是否存在指定元素
    	 */
    	@Test
    	public void contains(){
    		double[] arr = {1.23,2.34,3.45,4.56,5.67,6.78,7.89,8.90,4.56};
    		System.out.println(ArrayUtils.contains(arr, 6.78));
    		System.out.println(ArrayUtils.contains(arr, 6.77));
    	}
    	
    	/**
    	 * ArrayUtils.remove
    	 * 删除数组指定下标的元素返回新的数组对象
    	 */
    	@Test
    	public void remove(){
    		Person[] pp = getPP();
    		pp = ArrayUtils.remove(pp, 1);
    		printArray(pp);
    	}
    	
    	/**
    	 * ArrayUtils.removeAll
    	 * 批量删除数组指定下标的元素返回新的数组对象
    	 */
    	@Test
    	public void removeAll(){
    		Person[] pp = getPP();
    		pp = ArrayUtils.removeAll(pp, 1, 2);
    		printArray(pp);
    	}
    	
    	/**
    	 * ArrayUtils.removeElement
    	 * 删除数组指定元素(仅删除第一个)返回新的数组对象
    	 */
    	@Test
    	public void removeElement(){
    		Person p = new Person();
    		p.setId("1001");
    		p.setName("王睿");
    		p.setAge(27);
    		Person p1 = new Person();
    		p1.setId("1002");
    		p1.setName("钱青芝");
    		p1.setAge(27);
    		Person p2 = new Person();
    		p2.setId("1003");
    		p2.setName("王啸");
    		p2.setAge(30);
    		Person p3 = new Person();
    		p3.setId("1004");
    		p3.setName("胡曼琪");
    		p3.setAge(10);
    		Person[] pp = new Person[]{p,p,p,p1,p2,p3};
    		pp = ArrayUtils.removeElement(pp, p);
    		printArray(pp);
    	}
    	
    	/**
    	 * ArrayUtils.removeElements
    	 * 删除数组指定元素(传多个删多个)返回新的数组对象
    	 */
    	@Test
    	public void removeElements(){
    		Person p = new Person();
    		p.setId("1001");
    		p.setName("王睿");
    		p.setAge(27);
    		Person p1 = new Person();
    		p1.setId("1002");
    		p1.setName("钱青芝");
    		p1.setAge(27);
    		Person p2 = new Person();
    		p2.setId("1003");
    		p2.setName("王啸");
    		p2.setAge(30);
    		Person p3 = new Person();
    		p3.setId("1004");
    		p3.setName("胡曼琪");
    		p3.setAge(10);
    		Person[] pp = new Person[]{p,p,p,p1,p2,p3};
    		pp = ArrayUtils.removeElements(pp, p);
    		printArray(pp);
    		pp = new Person[]{p,p,p,p1,p2,p3};
    		pp = ArrayUtils.removeElements(pp, p, p);
    		printArray(pp);
    		
    		String[] strs = new String[]{"1", "1", "1", "2", "3", "4"};
    		strs = ArrayUtils.removeElements(strs, "1", "1");
    		printArray(strs);
    	}
    	
    	/**
    	 * ArrayUtils.reverse
    	 * 数组反转
    	 */
    	@Test
    	public void reverse(){
    		Person[] pp = getPP();
    		printArray(pp);
    		/**
    		 * 数组整个直接反转
    		 */
    		ArrayUtils.reverse(pp);
    		printArray(pp);
    		/**
    		 * 只反转第0到第2(不包含第2个元素)个元素
    		 */
    		ArrayUtils.reverse(pp, 0, 2);
    		printArray(pp);
    	}
    	
    	/**
    	 * ArrayUtils.subarray
    	 * 数组对象切割,返回新的数组对象
    	 */
    	@Test
    	public void subarray(){
    		Person[] pp = getPP();
    		printArray(pp);
    		pp = ArrayUtils.subarray(pp, 2, 3);
    		printArray(pp);
    	}
    	
    	
    	/**
    	 * ArrayUtils.toObject
    	 * 将8种基本类型数组转换为包装类型数组
    	 */
    	@Test
    	public void toObject(){
    		int[] arr = new int[]{};
    		System.out.println(arr.getClass().getSimpleName());
    		System.out.println(ArrayUtils.toObject(arr).getClass().getSimpleName());
    		char[] arr1 = new char[]{};
    		System.out.println(arr1.getClass().getSimpleName());
    		System.out.println(ArrayUtils.toObject(arr1).getClass().getSimpleName());
    		double[] arr2 = new double[]{1.1,2.2,3.3,4.4};
    		Double[] arr3 = ArrayUtils.toObject(arr2);
    		printArray(arr3);
    		for (Double d : arr3) {
    			System.out.println(d.getClass().getSimpleName());
    		}
    	}
    	
    	/**
    	 * ArrayUtils.toPrimitive
    	 * 将8中包装类型数组转换为基本类型数组
    	 */
    	@Test
    	public void toPrimitive(){
    		Integer[] arr = new Integer[]{};
    		System.out.println(arr.getClass().getSimpleName());
    		System.out.println(ArrayUtils.toPrimitive(arr).getClass().getSimpleName());
    		Character[] arr1 = new Character[]{};
    		System.out.println(arr1.getClass().getSimpleName());
    		System.out.println(ArrayUtils.toPrimitive(arr1).getClass().getSimpleName());
    		Double[] arr2 = new Double[]{1.1,2.2,3.3,4.4};
    		/**
    		 * 直接转换,不处理null值,出现null值即报空指针异常
    		 */
    		double[] arr3 = ArrayUtils.toPrimitive(arr2);
    		printArray(arr3);
    		arr2 = ArrayUtils.add(arr2, null);
    		/**
    		 * 处理null值,如果遇到null值直接替换为0.123456
    		 */
    		printArray(ArrayUtils.toPrimitive(arr2, 0.123456));
    		/**
    		 * 不处理null值,报空指针异常
    		 */
    		printArray(ArrayUtils.toPrimitive(arr2));
    	}
    	
    	/**
    	 * ArrayUtils.toArray
    	 * 将一组对象转换为数组
    	 */
    	@Test
    	public void toArray(){
    		String[] arr = ArrayUtils.toArray("112", "223", "445", "556");
    		printArray(arr);
    	}
    	
    	/**
    	 * ArrayUtils.toMap
    	 * 将二维数组转换为map对象
    	 */
    	@Test
    	public void toMap(){
    		String[] arr1 = ArrayUtils.toArray("112", "223", "445", "556");
    		String[] arr2 = ArrayUtils.toArray("556", "778", "889", "900");
    		String[][] arr3 = ArrayUtils.toArray(arr1, arr2);
    		Map map = ArrayUtils.toMap(arr3);
    		String[][] arr4 = new String[][] {{"RED", "#FF0000"},{"GREEN", "#00FF00"},{"BLUE", "#0000FF"}};
    		map = ArrayUtils.toMap(arr4);
    		Iterator it = map.keySet().iterator();
    		while(it.hasNext()) {
    			String key = (String) it.next();
    			System.out.println("key:" + key + ", value:" + map.get(key));
    		}
    		Object[][] notAMap = { { "A", new Double(100) },
    				{ "B", new Double(80) }, { "C", new Double(60) },
    				{ "D", new Double(40) }, { "E", new Double(20) } };
    		Map map1 = ArrayUtils.toMap(notAMap);
    		Double res = (Double) map1.get("C");
    		System.out.println("get 'C' from map1: " + res);
    	}
    	
    }
    

      

  • 相关阅读:
    读《构建之法- 现代软件工程》一书
    自我介绍
    jQuery Validate表单验证
    oracle数据库 expdp/impdp 和 exp/imp
    Java JDK安装及环境配置
    《JavaScript》JS中的跨域问题
    Python语言基础
    .net web 应用程序C#
    C# string 常用方法
    前端获取URL和SESSON中的值
  • 原文地址:https://www.cnblogs.com/nihaorz/p/5501510.html
Copyright © 2011-2022 走看看