导航:首页 > 编程语言 > 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相关的资料

热点内容
一个视频网站能赚多少钱 浏览:357
在电脑上怎么复制文件 浏览:496
我的世界文件夹mod在哪里 浏览:525
苹果5s测评 浏览:782
安全文件夹在哪里下 浏览:643
catpart文件名怎么设置 浏览:39
PDF档文件怎么另存为 浏览:402
网络机顶盒恢复出厂怎么能下载 浏览:4
网页元素代码 浏览:67
读书选择版本的原因 浏览:992
如何用数据线传文件 浏览:335
java使用jni 浏览:432
p970升级错误修复 浏览:119
米4文件管理在哪 浏览:376
ug编程用哪个版本最经典 浏览:420
javamysqljdbc导入 浏览:365
js某个js先执行 浏览:508
视频文件怎么变成两个了 浏览:523
exle表格如何匹配数据 浏览:850
丑角怎么画app 浏览:57

友情链接