java去除數(shù)組重復(fù)元素的四種方法
方法1:
需要一個(gè)存儲去重后元素的數(shù)組,然后兩層循環(huán),外層遍歷原數(shù)組,內(nèi)容逐個(gè)判斷是否和之后的元素重復(fù),然后再提出來存入新的數(shù)組。方法System.arraycopy(被復(fù)制的數(shù)組,起始下標(biāo),接收的新數(shù)組,起始下標(biāo),結(jié)束下標(biāo));可以直接復(fù)制數(shù)組,既然這樣,我就沒必要糾結(jié)新數(shù)組的長度了,直接聲明一個(gè)跟原數(shù)組長度一樣的臨時(shí)數(shù)組,只要記錄下去重后的元素個(gè)數(shù),然后就可以確定去重后數(shù)組長度再去將臨時(shí)數(shù)組拷貝到新數(shù)組就行了。
package testPro.test;
public class testDistinctArr {
public static void main(String[] args) {
String[] arr = new String[7];
arr[0] = "a";
arr[1] = "a";
arr[2] = "b";
arr[3] = "c";
arr[4] = "d";
System.out.println(arr.toString());
for (String s : arr) {
System.out.println(s);
}
System.out.println("===============");
Object[] s = ifRepeat(arr);
for (Object o : s) {
System.out.println(o);
}
}
/**
* 去掉數(shù)組中重復(fù)的元素
*
* @param arr
* @return
*/
//方法一:需要傳入一個(gè)Object數(shù)組,然后返回去重后的數(shù)組
public static Object[] ifRepeat(Object[] arr){
//用來記錄去除重復(fù)之后的數(shù)組長度和給臨時(shí)數(shù)組作為下標(biāo)索引
int t = 0;
//臨時(shí)數(shù)組
Object[] tempArr = new Object[arr.length];
//遍歷原數(shù)組
for(int i = 0; i < arr.length; i++){
//聲明一個(gè)標(biāo)記,并每次重置
boolean isTrue = true;
//內(nèi)層循環(huán)將原數(shù)組的元素逐個(gè)對比
for(int j=i+1;j<arr.length;j++){
//如果發(fā)現(xiàn)有重復(fù)元素,改變標(biāo)記狀態(tài)并結(jié)束當(dāng)次內(nèi)層循環(huán)
if(arr[i]==arr[j]){
isTrue = false;
break;
}
}
//判斷標(biāo)記是否被改變,如果沒被改變就是沒有重復(fù)元素
if(isTrue){
//沒有元素就將原數(shù)組的元素賦給臨時(shí)數(shù)組
tempArr[t] = arr[i];
//走到這里證明當(dāng)前元素沒有重復(fù),那么記錄自增
t++;
}
}
//聲明需要返回的數(shù)組,這個(gè)才是去重后的數(shù)組
Object[] newArr = new Object[t];
//用arraycopy方法將剛才去重的數(shù)組拷貝到新數(shù)組并返回
System.arraycopy(tempArr,0,newArr,0,t);
return newArr;
}
}
去重效果:

方法2:
只需要?jiǎng)?chuàng)建一個(gè)集合,然后遍歷數(shù)組逐一放入集合,只要在放入之前用contains()方法判斷一下集合中是否已經(jīng)存在這個(gè)元素就行了,然后用toArray轉(zhuǎn)成數(shù)組一切搞定。
public static Object[] ifRepeat2(Object[] arr){
//創(chuàng)建一個(gè)集合
List list = new ArrayList();
//遍歷數(shù)組往集合里存元素
for(int i=0;i<arr.length;i++){
//如果集合里面沒有相同的元素才往里存
if(!list.contains(arr[i])){
list.add(arr[i]);
}
}
//toArray()方法會返回一個(gè)包含集合所有元素的Object類型數(shù)組
Object[] newArr = list.toArray();
return newArr;
}
運(yùn)行效果:

方法3:
利用Set集合無序不可重復(fù)的特性進(jìn)行元素過濾。
public static Object[] ifRepeat3(Object[] arr){
//實(shí)例化一個(gè)set集合
Set set = new HashSet();
//遍歷數(shù)組并存入集合,如果元素已存在則不會重復(fù)存入
for (int i = 0; i < arr.length; i++) {
set.add(arr[i]);
}
//返回Set集合的數(shù)組形式
return set.toArray();
}
運(yùn)行效果:

方法4:
鏈表的哈希集合:有順序,不重復(fù)。
public static Set<Object> ifRepeat4(Object[] arr){
Set<Object> haoma = new LinkedHashSet<Object>();
for (int i = 0; i < arr.length; i++) {
haoma.add(arr[i]);
}
return haoma;
}
運(yùn)行效果:

到此這篇關(guān)于java去除數(shù)組重復(fù)元素的四種方法的文章就介紹到這了,更多相關(guān)java去除數(shù)組重復(fù)元素內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java Scoket實(shí)現(xiàn)雙向通信代碼詳解
這篇文章主要介紹了Java Scoket實(shí)現(xiàn)雙向通信代碼詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
Json轉(zhuǎn)化為Java對象的實(shí)例詳解
這篇文章主要介紹了Json轉(zhuǎn)化為Java對象的實(shí)例詳解的相關(guān)資料,前后端數(shù)據(jù)交互的情況經(jīng)常會遇到Json串與java 對象的相互轉(zhuǎn)換方便操作,需要的朋友可以參考下2017-08-08
Java客戶端服務(wù)端上傳接收文件實(shí)現(xiàn)詳解
這篇文章主要介紹了Java客戶端服務(wù)端上傳接收文件實(shí)現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
Java通過調(diào)用FFMPEG獲取視頻時(shí)長
這篇文章主要為大家詳細(xì)介紹了Java通過調(diào)用FFMPEG獲取視頻時(shí)長,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04

