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

熱點內容
c語言程序設計模 瀏覽:92
兒童怎麼做可編程機 瀏覽:603
數據計算屬於什麼統計學 瀏覽:921
07word怎麼去掉標記 瀏覽:979
qq緩存的數據是什麼 瀏覽:348
LED主Kv文件多少兆 瀏覽:856
蘋果edge怎麼刪除下載文件 瀏覽:471
sas邏輯回歸代碼 瀏覽:572
用於keil下的stc器件資料庫 瀏覽:400
新聞網站後台如何操作前台 瀏覽:539
在剪映app中怎麼查看視頻尺寸 瀏覽:9
linux文件成分包括 瀏覽:886
文件轉換免費的軟體 瀏覽:644
linuxwpsxlsx 瀏覽:482
小米手機怎麼上移動網路連接失敗怎麼辦 瀏覽:598
win10系統打開java 瀏覽:479
全日制編程什麼意思 瀏覽:447
筆記本創建區域網怎麼傳文件 瀏覽:871
怎樣查看id密碼 瀏覽:647
贛州極客晨星少兒編程怎麼樣 瀏覽:690

友情鏈接