導航:首頁 > 編程語言 > 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相關的資料

熱點內容
邏輯文件名和物理文件名關系 瀏覽:66
怎麼查一個網站的外鏈 瀏覽:675
linux下db2安裝時版本選擇 瀏覽:738
匯編編程用哪個軟體 瀏覽:486
仙樂下的歌在文件管理哪裡 瀏覽:477
115網盤解析工具2014 瀏覽:371
內圓弧銑刀怎麼編程 瀏覽:410
記事本文件轉word格式對齊 瀏覽:300
excel刪除恢復文件 瀏覽:290
三星s4怎麼切換3g網路 瀏覽:994
什麼是網站維護 瀏覽:314
文件夾錄像在哪裡 瀏覽:621
可以發語音的是什麼app 瀏覽:804
恢復手機桌面文件管理 瀏覽:627
用什麼軟體可以打開psd文件 瀏覽:459
公安有哪些警務app 瀏覽:150
生意轉租用什麼app 瀏覽:683
廣義的網路信息保密性是指 瀏覽:657
qq背景唯美簡約圖片 瀏覽:292
sky網路電話怎麼收費 瀏覽:599

友情鏈接