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

友情链接