java去除数组重复元素的方法
转载自:https://blog.csdn.net/Solar24/article/details/78672500
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set; /*去除重复的数组:
* 方法一:需要一个存储去重后元素的数组,然后两层循环,外层遍历原数组,内容逐个判断是否和之后的元素重复,然后再提出来存入新的数组。方法System.arraycopy(被复制的数组,起始下标,接收的新数组,起始下标,结束下标);可以直接复制数组,既然这样,我就没必要纠结新数组的长度了,直接声明一个跟原数组长度一样的临时数组,只要记录下去重后的元素个数,然后就可以确定去重后数组长度再去将临时数组拷贝到新数组就行了。
* 方法二:只需要创建一个集合,然后遍历数组逐一放入集合,只要在放入之前用contains()方法判断一下集合中是否已经存在这个元素就行了,然后用toArray转成数组一切搞定。
* 方法三:最简单的方法就是利用Set集合无序不可重复的特性进行元素过滤。
* 方法四:链表的哈希集合:有顺序,不重复。
*/ public class ShijuanDa1 { public static void main(String[] args) {
// TODO Auto-generated method stub
String[] strs ={"2007-1-01","2007-1-06",
"2007-1-01","2007-1-08","2007-1-08"}; printArr(strs); System.out.println("------------"); Object[] newArr = ifRepeat(strs); printArr(newArr); System.out.println("------------"); ifRepeat2(strs); System.out.println("------------"); Object[] newArr3 = ifRepeat3(strs); printArr(newArr3); System.out.println("------------"); ifRepeat4(strs); } public static void printArr(Object[] arr) {
for (Object object : arr) {
System.out.println(object);
}
} //方法一:需要传入一个Object数组,然后返回去重后的数组
public static Object[] ifRepeat(Object[] arr){
//用来记录去除重复之后的数组长度和给临时数组作为下标索引
int t = 0;
//临时数组
Object[] tempArr = new Object[arr.length];
//遍历原数组
for(int i = 0; i < arr.length; i++){
//声明一个标记,并每次重置
boolean isTrue = true;
//内层循环将原数组的元素逐个对比
for(int j=i+1;j<arr.length;j++){
//如果发现有重复元素,改变标记状态并结束当次内层循环
if(arr[i]==arr[j]){
isTrue = false;
break;
}
}
//判断标记是否被改变,如果没被改变就是没有重复元素
if(isTrue){
//没有元素就将原数组的元素赋给临时数组
tempArr[t] = arr[i];
//走到这里证明当前元素没有重复,那么记录自增
t++;
}
}
//声明需要返回的数组,这个才是去重后的数组
Object[] newArr = new Object[t];
//用arraycopy方法将刚才去重的数组拷贝到新数组并返回
System.arraycopy(tempArr,0,newArr,0,t);
return newArr;
} /*
* 方法二:只需要创建一个集合,然后遍历数组逐一放入集合,只要在放入之前用contains()方法判断一下集合中是否已经存在这个元素就行了,然后用toArray转成数组一切搞定。
*/
public static void ifRepeat2(Object[] arr){
//创建一个集合
List list = new ArrayList();
//遍历数组往集合里存元素
for(int i=0;i<arr.length;i++){
//如果集合里面没有相同的元素才往里存
if(!list.contains(arr[i])){
list.add(arr[i]);
}
} //toArray()方法会返回一个包含集合所有元素的Object类型数组
Object[] newArr = list.toArray();
//遍历输出一下测试是否有效
for(int i=0;i<newArr.length;i++){
System.out.println(" "+newArr[i]);
} }
/*
* 方法三:最简单的方法就是利用Set集合无序不可重复的特性进行元素过滤。
*/
public static Object[] ifRepeat3(Object[] arr){
//实例化一个set集合
Set set = new HashSet();
//遍历数组并存入集合,如果元素已存在则不会重复存入
for (int i = 0; i < arr.length; i++) {
set.add(arr[i]);
}
//返回Set集合的数组形式
return set.toArray();
} /*
* 方法四:链表的哈希集合:有顺序,不重复。
*/
public static void ifRepeat4(Object[] arr){ LinkedHashSet<Object> haoma = new LinkedHashSet<Object>();
for (int i = 0; i < arr.length; i++) {
haoma.add(arr[i]);
} // 创建迭代器
Iterator<Object> iterator = haoma.iterator();
int a = 0;
// 迭代集合
while (iterator.hasNext()) { // true
Object c = iterator.next(); System.out.println(c);
} } }
java去除数组重复元素的方法的更多相关文章
- JS Jquery去除数组重复元素
js jquery去除数组中的重复元素 第一种:$.unique() 第二种: for(var i = 0,len = totalArray_line.length;i < len;i++) { ...
- Java查找数组重复元素,并打印重复元素、重复次数、重复元素位置
面试题查找重复元素并打印重复次数和重复位置,一顿懵逼,回来死磕写下来,打印指定重复次数和最大次数,其他在此基础上可以再更新 package sort; import org.testng.annota ...
- java 去除数组重复数据,并输出重复数据值
/** * 去除重复数据 * @author Sunqinbo */ public class RemoveDuplicateData { public static void main(String ...
- python去除列表中重复元素的方法
列表中元素位置的索引用的是L.index 本文实例讲述了Python去除列表中重复元素的方法.分享给大家供大家参考.具体如下: 比较容易记忆的是用内置的set 1 2 3 l1 = ['b','c', ...
- js去除数组重复项
/** * js去除数组重复项 */ //方法一.使用正则法 // reg.test(str),匹配得到就返回true,匹配不到返回false var arr = ["345",& ...
- js去除数组重复成员
js去除数组重复成员 第一种思路是:遍历要删除的数组arr, 把元素分别放入另一个数组tmp中,在判断该元素在arr中不存在才允许放入tmp中 用到两个函数:for ...in 和 indexOf() ...
- (转载)php数组删除元素各种方法总结
(转载)http://www.111cn.net/phper/php/46865.htm 有很多朋友都不知道怎么把数组中元素给删除,下面我来总结各种数组删除元素方法给各位,有需要了解的朋友可进入参考. ...
- 将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)
方法一:使用Arrays.asList()方法 1 2 String[] asset = {"equity", "stocks", "gold&q ...
- php array_flip() 删除数组重复元素——大彻大悟
1. php array_flip() 删除数组重复元素,如果用于一维索引数组,好理解. [root@BG-DB:~]$more arr.php <?php $arr = ar ...
随机推荐
- ubuntu安装python版本的opencv
安装命令: pip install opencv-python
- 转发: 关于ST MCU的UID详细说明
https://www.stmcu.org.cn/article/id-327990 ST MCU芯片中的绝大部分都内置一串96位唯一标识码[unique ID].时不时有人问起这个东西,尤其最近感, ...
- SAP S/4 HANA 1709 Fully Activated Appliance
SAP S4HANA 1709 Fully Activated Appliance:简单来说比IDES版本功能更加强大,内置三个集团,分别用于测试不同业务.内置官方的BP内容 安装需要500G SSD ...
- Spring的回滚问题
再说下声明式事务和注解事务回滚的原理:当被切面切中或者是加了注解的方法中抛出了RuntimeException异常时,Spring会进行事务回滚.默认情况下是捕获到方法的RuntimeExceptio ...
- python练习题_04
import os def fetch(data): # print('\033[1;43m这是查询功能\033[0m') # print('\033[1;43m用户数据是\033[0m',data) ...
- cxgrid主从表的从表数据小于主表总数的问题
当从表的数据移动需要和数据源记录同步时,会发生一现象:从表中设定的keyfield记录不连续,显示就会中断. 这样要设置从表的排序,按照主表的关联键在内存表里进行排序 indexFieldNames设 ...
- 2.数据库的基本操作<针对于库层面的操作>
1.查看已有数据库: MySQL [(none)]> show databases; +--------------------+ | Database | +----------------- ...
- Redis内存分析工具redis-rdb-tools
一.安装redis-rdb-tools(项目地址:github) # git clone https://github.com/sripathikrishnan/redis-rdb-tools# cd ...
- [SF] Symfony 在 console 中结合 Workerman
在web框架的console中,命令不再是直接指定入口文件,如以往 php test.php start,而是类似 php app/console do 的形式. workerman 对命令的解析是 ...
- 实现对Java配置文件Properties的读取、写入与更新操作
/** * 实现对Java配置文件Properties的读取.写入与更新操作 */ package test; import java.io.BufferedInputStream; import j ...