導航:首頁 > 編程語言 > vector去重java

vector去重java

發布時間:2025-01-11 03:00:38

⑴ Linux下C++讀取文件去重的問題

#include<fstream>
#include<vector>
#include<string>
#include<algorithm>
#include<iostream>
#include<sstream>

classdata_t{
public:
data_t():val(5){}

std::string&operator[](intconsti){
returnval[i];
}
std::stringconst&operator[](intconsti)const{
returnval[i];
}

private:
std::vector<std::string>val;
};

template<inti>
structcmp1{//用於sort函數
booloperator()(data_tconst&a,data_tconst&b)const{
returna[i]<b[i];
}
};

template<inti>
structcmp2{//用於unique函數
booloperator()(data_tconst&a,data_tconst&b)const{
returna[i]==b[i];
}
};

intmain(){
std::ifstreamistr("input.txt");
if(!istr){
std::cerr<<"文件打開失敗 ";
return__LINE__;
}

typedefstd::vector<data_t>vector_t;
vector_tdata;
//讀取文件
std::stringline;
intline_num=0;
while(getline(istr,line)){
++line_num;
data_ttmp_data;
std::istringstreamtmp_str(line);
inti=0;
for(;i!=5;++i){
if(!getline(tmp_str,tmp_data[i],' ')){
std::cerr<<"在第"<<line_num<<"行發生錯誤 ";
}
}
if(i==5){//該行讀取成功
data.push_back(tmp_data);
}
}

//按關鍵字1去重
std::sort(data.begin(),data.end(),cmp1<0>());
vector_t::iteratorlast=std::unique(data.begin(),data.end(),cmp2<0>());
//按關鍵字2去重
std::sort(data.begin(),last,cmp1<1>());
last=std::unique(data.begin(),last,cmp2<1>());

data.erase(last,data.end());

//輸出到另一個文件
std::ofstreamostr("output.txt");
if(!ostr){
std::cerr<<"文件打開失敗 ";
return__LINE__;
}

for(inti=0;i!=data.size();++i){
for(intj=0;j!=5;++j){
ostr<<data[i][j]<<" ";
}
ostr<<" ";
}

return0;
}

輸入文件為input.txt,樣例:

111222333444555
111222333444555
1111222333444555
1111222333444555
11111222333444555
11111222333444555
輸出到output.txt,樣例:
111222333444555

⑵ 一個arraylist,往裡面add值的時候,遇到重復就不要添加,怎麼做

可以使用set做媒介,先將需要加入的數據存入set後再從set存入list。

如圖所示

Set和List的區別

⑶ list和set的區別

在Java編程中,List和Set是兩種常見的集合類型,它們各有特色。首先,List是可重復的,允許存儲元素出現多次,例如ArrayList、Vector和LinkedList都實現了List介面,它們的特點是元素有序,適合存儲單列數據,允許數據重復。相反,Set是不可重復的集合,主要由HashSet和TreeSet實現,這意味著其中的元素是唯一的,這使得Set在查找和去重操作上更為高效。


其次,List和Set在數據結構上有所區別。List更像是有序的數據序列,元素的插入和刪除會影響其順序,而Set則更像是鍵值對的存儲,以鍵(key)為唯一標識,值(value)可以有重復,但鍵是不允許重復的。因此,如果你需要保持元素的唯一性和順序,可以選擇List;如果關注的是去重和快速查找,Set則更為合適。


總的來說,List和Set的選擇取決於你的具體需求,是追求有序性和重復性,還是追求去重和高效查找,這決定了你應選擇哪種集合類型。
閱讀全文

與vector去重java相關的資料

熱點內容
maya粒子表達式教程 瀏覽:84
抖音小視頻如何掛app 瀏覽:283
cad怎麼設置替補文件 瀏覽:790
win10啟動文件是空的 瀏覽:397
jk網站有哪些 瀏覽:134
學編程和3d哪個更好 瀏覽:932
win10移動硬碟文件無法打開 瀏覽:385
文件名是亂碼還刪不掉 瀏覽:643
蘋果鍵盤怎麼打開任務管理器 瀏覽:437
手機桌面文件名字大全 瀏覽:334
tplink默認無線密碼是多少 瀏覽:33
ipaddgm文件 瀏覽:99
lua語言編程用哪個平台 瀏覽:272
政采雲如何導出pdf投標文件 瀏覽:529
php獲取postjson數據 瀏覽:551
javatimetask 瀏覽:16
編程的話要什麼證件 瀏覽:94
錢脈通微信多開 瀏覽:878
中學生學編程哪個培訓機構好 瀏覽:852
榮耀路由TV設置文件共享錯誤 瀏覽:525

友情鏈接