java 数组Array去重 添加 删除元素

今天刚刚做完一个新需求。碰到对数组去重/删除元素。我觉得这个对大家在以后的开发中很有意义。。也算是一个工具方法。。。废话不多说。直接上代码

首先写一个公共方法。。。。先将数组转化成List;

请看代码

/*数组转化List*/
	public static List<String> arrayToList(String[] arr){
		List<String> res = new ArrayList<>();
		if(null == arr || 0 == arr.length){
			return res;
		}
		for(String str : arr){
			res.add(str);
		}
		return res;
	}

这个方法有人会说为啥不用Arrays.asList(arr);这个大家自己去查询为什么不用。。我说结果,返回的ArrayList不是java.util.ArrayList。而是Arrays里面的静态内部类。。而且这个内部类只能读取元素。不能添加/删除元素。。

接下来就是去重/添加/删除元素

/*数组元素去重   --第一种方法*/
	public static String[] arrayEliminateDuplication(String[] strs){
		if(null == strs || 0 == strs.length){
			return null;
		}
		Set<String> set = new HashSet<>(strs.length);//利用set的不可重复性
		for(String st : strs){
			set.add(st);
		}
		
		return set.toArray(new String[set.size()]);
	}

	/*数组元素去重   --第二种方法*/
	public static String[] arrayEliminateDuplication00(String[] strs){
		if(null == strs || 0 == strs.length){
			return null;
		}
		List<String> res = new ArrayList<>(strs.length);
		for(String st : strs){
			if(!res.contains(st)){//数组中是否有相同元素
				res.add(st);
			}
		}
		
		return res.toArray(new String[res.size()]);
	}
	
	/*删除数组中的元素*/
	public static String[] deleteArrayElement(String[] arr,String str){
		if(null == str ){//元素为null
			if(null == arr || 0 == arr.length){//数组为空
				return null;
			}else{
				return arr;
			}
		}else{//元素不为null
			if(null == arr || 0 == arr.length){//数组为空
				return null;
			}
		}
		/*先将元素转换成List*/
		List<String> res = new ArrayList<>(arr.length);
		for(String st : arr){
			if(!res.contains(st)){
				res.add(st);
			}
		}
		if(res.contains(str)){//集合中存在要删除的元素就删除 ,不存在钙元素就不操作
			res.remove(str);
		}
		return res.toArray(new String[res.size()]);
	}
	
	/*数组中添加元素*/
	public static String[] addArrayElement(String[] arr,String element){
		if(null == arr || 0 == arr.length){
			return null;
		}
		List<String> list = arrayToList(arr);
		list.add( element);
		return list.toArray(new String [list.size()]);
	}
	/*数组中指定位置添加元素*/
	public static String[] designatedLocationAddArrayElement(String[] arr,int index,String element){
		if(null == arr || 0 == arr.length){
			return null;
		}
		int size = arr.length-1;//数组的最大下标
		if(0<=index && index<=size){//添加位置在下标范围内
			List<String> list = arrayToList(arr);
			list.add(index, element);
			return list.toArray(new String [list.size()]);
		}else{
			return arr;
		}
	}

注:在返回数组的时候。我直接用了List.toArray(new String[size]) 和Set.toArray(new String[size])的方法。。因为返回的数组的长度是固定的。不像返回的集合List/Set  ,如果用了Arrays里的asList方法。就会导致返回的集合只能读取,不能添加/删除。。

 

这些方法我已经测试合格。。有哪些不好的地方请指教。。谢谢!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值