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

  

 

转载于:https://www.cnblogs.com/nihaorz/p/5501510.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
commons-lang3.3.1.jar、Apache Commons的一个,包含了一些数据类型工具类,是java.lang.*的扩展。必须使用的jar包。为JRE5.0+的更好的版本所提供 Jar文件包含的类: META-INF/MANIFEST.MFMETA-INF/LICENSE.txtMETA-INF/NOTICE.txtorg.apache.commons.lang.ArrayUtils.class org.apache.commons.lang.BitField.class org.apache.commons.lang.BooleanUtils.class org.apache.commons.lang.CharEncoding.class org.apache.commons.lang.CharRange.class org.apache.commons.lang.CharSet.class org.apache.commons.lang.CharSetUtils.class org.apache.commons.lang.CharUtils.class org.apache.commons.lang.Clas sUtils.class org.apache.commons.lang.Entities$ArrayEntityMap.class org.apache.commons.lang.Entities$BinaryEntityMap.class org.apache.commons.lang.Entities$EntityMap.class org.apache.commons.lang.Entities$HashEntityMap.class org.apache.commons.lang.Entities$LookupEntityMap.class org.apache.commons.lang.Entities$MapIntMap.class org.apache.commons.lang.Entities$PrimitiveEntityMap.class org.apache.commons.lang.Entities$TreeEntityMap.class org.apache.commons.lang.Entities.class org.apache.commons.lang.IllegalClassException.class org.apache.commons.lang.IncompleteArgumentException.class org.apache.commons.lang.IntHashMap$Entry.class org.apache.commons.lang.IntHashMap.class org.apache.commons.lang.LocaleUtils.class org.apache.commons.lang.NotImplementedException.class org.apache.commons.lang.NullArgumentException.class org.apache.commons.lang.NumberRange.class org.apache.commons.lang.NumberUtils.class org.apache.commons.lang.ObjectUtils$Null.class org.apache.commons.lang.ObjectUtils.class org.apache.commons.lang.RandomStringUtils.class org.apache.commons.lang.SerializationException.class org.apache.commons.lang.SerializationUtils.class org.apache.commons.lang.StringEscapeUtils.class org.apache.commons.lang.StringUtils.class org.apache.commons.lang.SystemUtils.class org.apache.commons.lang.UnhandledException.class org.apache.commons.lang.Validate.class org.apache.commons.lang.WordUtils.class org.apache.commons.lang.builder.CompareToBuilder.class org.apache.commons.lang.builder.EqualsBuilder.class org.apache.commons.lang.builder.HashCodeBuilder.class org.apache.commons.lang.builder.ReflectionToStringBuilder$1.class org.apache.commons.lang.builder.ReflectionToStringBuilder.class org.apache.commons.lang.builder.StandardToStringStyle.class org.apache.commons.lang.builder.ToStringBuilder.class org.apache.commons.lang.builder.ToStringStyle$DefaultToStringStyle.class org.apache.commons.lang.builder.ToStringStyle$MultiLineToStringStyle.class org.apache.commons.lang.builder.ToStringStyle$NoFieldNameToStringStyle.class org.apache.commons.lang.builder.ToStringStyle$ShortPrefixToStringStyle.class org.apache.commons.lang.builder.ToStringStyle$SimpleToStringStyle.class org.apache.commons.lang.builder.ToStringStyle.class org.apache.commons.lang.enum.Enum$Entry.class org.apache.commons.lang.enum.Enum.class org.apache.commons.lang.enum.EnumUtils.class org.apache.commons.lang.enum.ValuedEnum.class org.apache.commons.lang.enums.Enum$Entry.class org.apache.commons.lang.enums.Enum.class org.apache.commons.lang.enums.EnumUtils.class org.apache.commons.lang.enums.ValuedEnum.class org.apache.commons.lang.exception.ExceptionUtils.class org.apache.commons.lang.exception.Nestable.class org.apache.commons.lang.exception.NestableDelegate.class org.apache.commons.lang.exception.NestableError.class org.apache.commons.lang.exception.NestableException.class org.apache.commons.lang.exception.NestableRuntimeException.class org.apache.commons.lang.math.DoubleRange.class org.apache.commons.lang.math.FloatRange.class org.apache.commons.lang.math.Fraction.class org.apache.commons.lang.math.IntRange.class org.apache.commons.lang.math.JVMRandom.class org.apache.commons.lang.math.LongRange.class org.apache.commons.lang.math.NumberRange.class org.apache.commons.lang.math.NumberUtils.class org.apache.commons.lang.math.RandomUtils.class org.apache.commons.lang.math.Range.class org.apache.commons.lang.mutable.Mutable.class org.apache.commons.lang.mutable.MutableBoolean.class org.apache.commons.lang.mutable.MutableByte.class org.apache.commons.lang.mutable.MutableDouble.class org.apache.commons.lang.mutable.MutableFloat.class org.apache.commons.lang.mutable.MutableInt.class org.apache.commons.lang.mutable.MutableLong.class org.apache.commons.lang.mutable.MutableObject.class org.apache.commons.lang.mutable.MutableShort.class org.apache.commons.lang.text.CompositeFormat.class org.apache.commons.lang.text.StrBuilder$StrBuilderReader.class org.apache.commons.lang.text.StrBuilder$StrBuilderTokenizer.class org.apache.commons.lang.text.StrBuilder$StrBuilderWriter.class org.apache.commons.lang.text.StrBuilder.class org.apache.commons.lang.text.StrLookup$MapStrLookup.class org.apache.commons.lang.text.StrLookup.class org.apache.commons.lang.text.StrMatcher$CharMatcher.class org.apache.commons.lang.text.StrMatcher$CharSetMatcher.class org.apache.commons.lang.text.StrMatcher$NoMatcher.class org.apache.commons.lang.text.StrMatcher$StringMatcher.class org.apache.commons.lang.text.StrMatcher$TrimMatcher.class org.apache.commons.lang.text.StrMatcher.class org.apache.commons.lang.text.StrSubstitutor.class org.apache.commons.lang.text.StrTokenizer.class org.apache.commons.lang.time.DateFormatUtils.class org.apache.commons.lang.time.DateUtils$DateIterator.class org.apache.commons.lang.time.DateUtils.class org.apache.commons.lang.time.DurationFormatUtils$Token.class org.apache.commons.lang.time.DurationFormatUtils.class org.apache.commons.lang.time.FastDateFormat$CharacterLiteral.class org.apache.commons.lang.time.FastDateFormat$NumberRule.class org.apache.commons.lang.time.FastDateFormat$PaddedNumberField.class org.apache.commons.lang.time.FastDateFormat$Pair.class org.apache.commons.lang.time.FastDateFormat$Rule.class org.apache.commons.lang.time.FastDateFormat$StringLiteral.class org.apache.commons.lang.time.FastDateFormat$TextField.class org.apache.commons.lang.time.FastDateFormat$TimeZoneDisplayKey.class org.apache.commons.lang.time.FastDateFormat$TimeZoneNameRule.class org.apache.commons.lang.time.FastDateFormat$TimeZoneNumberRule.class org.apache.commons.lang.time.FastDateFormat$TwelveHourField.class org.apache.commons.lang.time.FastDateFormat$TwentyFourHourField.class org.apache.commons.lang.time.FastDateFormat$TwoDigitMonthField.class org.apache.commons.lang.time.FastDateFormat$TwoDigitNumberField.class org.apache.commons.lang.time.FastDateFormat$TwoDigitYearField.class org.apache.commons.lang.time.FastDateFormat$UnpaddedMonthField.class org.apache.commons.lang.time.FastDateFormat$UnpaddedNumberField.class org.apache.commons.lang.time.FastDateFormat.class org.apache.commons.lang.time.StopWatch.class

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值