导航:首页 > 编程语言 > 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

友情链接