java去除數(shù)組重復(fù)元素的四種方法
方法1:
需要一個(gè)存儲(chǔ)去重后元素的數(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()方法會(huì)返回一個(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ù)組并存入集合,如果元素已存在則不會(huì)重復(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使用@Autowired注解獲取對象為null的幾種情況及解決方法
這篇文章主要給大家介紹了使用@Autowired注解獲取對象為null的幾種情況以及?解決方法,文中有詳細(xì)的代碼示例講解,具有一定的參考價(jià)值,需要的朋友可以參考下2023-09-09
Java實(shí)現(xiàn)動(dòng)物換位游戲完整?過程詳解
大家好,今天嘗試用Java編程設(shè)計(jì)一個(gè)GUI界面的動(dòng)物換位游戲,游戲的結(jié)果是讓左右兩組的動(dòng)物交換位置,以下是具體設(shè)計(jì)過程,供大家參考2022-07-07
使用Spring boot 的profile功能實(shí)現(xiàn)多環(huán)境配置自動(dòng)切換
這篇文章主要介紹了使用Spring boot 的profile功能實(shí)現(xiàn)多環(huán)境配置自動(dòng)切換的相關(guān)知識,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2018-11-11
在Spring環(huán)境中正確關(guān)閉線程池的姿勢
這篇文章主要介紹了在Spring環(huán)境中正確關(guān)閉線程池的姿勢,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
SpringBoot Jpa企業(yè)開發(fā)示例詳細(xì)講解
這篇文章主要介紹了SpringBoot Jpa企業(yè)開發(fā)示例,Jpa可以通過實(shí)體類生成數(shù)據(jù)庫的表,同時(shí)自帶很多增刪改查方法,大部分sql語句不需要我們自己寫,配置完成后直接調(diào)用方法即可,很方便2022-11-11
LibrarySystem圖書管理系統(tǒng)開發(fā)(一)
這篇文章主要為大家詳細(xì)介紹了LibrarySystem圖書管理系統(tǒng)開發(fā),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
Spring中的@Value和@PropertySource注解詳解
這篇文章主要介紹了Spring中的@Value和@PropertySource注解詳解,@PropertySource:讀取外部配置文件中的key-value保存到運(yùn)行的環(huán)境變量中,本文提供了部分實(shí)現(xiàn)代碼,需要的朋友可以參考下2023-11-11

