㈠ java 一個list集合中很多重復元素時,當重復的元素中一個插入數據其他重復的數據同樣的插入 如何實現
同一個對象,你可以往list插入兩次,在list裡面占兩個位置,但是是同一個對象。
㈡ JAVA三個集合LIST 取集合相同值合並
List裡面有一個「contains」的方法,可以知道list裡面是否存在某個值:
importjava.util.ArrayList;
importjava.util.List;
publicclassI{
publicstaticvoidmain(String[]args){
List<Integer>list1=newArrayList<Integer>();
for(inti=0;i<7;i++){
list1.add(i);
}
List<Integer>list2=newArrayList<Integer>();
for(inti=3;i<10;i++){
list2.add(i);
}
System.out.println("List1:"+list1);
System.out.println("List2:"+list2);
System.out.println("交集為"+getIntersection(list1,list2));
}
publicstaticList<Integer>getIntersection(List<Integer>list1,
List<Integer>list2){
List<Integer>result=newArrayList<Integer>();
for(Integerinteger:list2){//遍歷list1
if(list1.contains(integer)){//如果存在這個數
result.add(integer);//放進一個list裡面,這個list就是交集
}
}
returnresult;
}
}
測試結果:
㈢ 如何去除List集合中的重復項ID的,並把重復項的數量相加
使用HashMap,具有重復的特點
比如你的數據在一個List對象list中,每一個對象是Wu類型,Wu中有int類型的id和int類型的count
List<Wu> list;
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
for(Wu w : list){
if(map.get(w.getId())==null){
map.put(w.getId(),w.getCount());
}else{
map.put(w.getId(),w.getCount()+map.get(w.getId()));
}
}
只是簡單表述一下,原理是利用hashmap的key不能重復的特點
hashmap中key存放id,value存放count,先遍歷list把值一個個存入haspmap中,存之前通過id去找key如果沒有,就存進去,如果有就說明重復了,就取出count累加後再放進去。
㈣ 一個list要把相同的元素的某個值累加起來,怎麼辦
常規做法就是遍歷list,然後取出studentNo&name進行比對,放在map中,like this:
for( student in studentList){
if(map.contains(student[(name+studentNo)])){
map.get(name+studentNo)+student.score
}else{
// put score into the map with name&studentNo key
}
}
this map object is the final result you want
//或者你可以寫一個子類繼承hashmap,重寫put方法,把這個方法包含了你需要的邏輯,然後一個個直接put進去即可
㈤ 如何去除LIST里的重復元素並合並相同的對象
最好的辦法是用Set,因為Set裡面存放的數據是不重復的。
如果你不想用Set,那還可以向下面這樣處理。
List list_tmp = new ArrayList(); //建立一個用於臨時存放不重復list元素的List集合。
for(Object obj:list){
//可以根據需要,在這里加上強制轉型。
//如list裡面存放的是一個User對象,那麼加上User u = (User) obj;
if(!list_tmp.contains(obj)){ //注意contains方法是通過equals方法進行比較的所以你要根據你自己的需要看是否需要重寫list對象裡面的equals方法。
list_tmp.add(obj);//如果上面加了強制轉型,這里需要寫list_tmp.add(u);
}
}
㈥ java集合中怎麼使兩個一樣的變數重疊
一樣的變數用List,set集合不允許重復
理解你的意思是一樣的變數挨著,for循環內嵌ListIterator,for循環取集合中的對象,迭代遍歷集合,相同就排在挨著的位置。
㈦ 怎樣將一個list中重復的整數相加
用foreach歷遍list相加就可以了啊
List <Integer>list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(2);
list.add(3);
int n=0;
for(int i:list){
n=n+i;
}
System.out.println(n);
㈧ 如何將list中ID值相同的數據合成一條
Map<String,List<String>>map=newHashMap();
for(Strings:list){
Stringkey=s.substring(0,8);
Stringvalue=s.substring(8);
if(map.contains(key)){
List<String>ls=map.get(key);
ls.add(value);
}else{
map.put(key,Arrays.asList(value));
}
}
㈨ java中如何把2個LIST相同的內容相加
packagetest;
importjava.util.*;
publicclassTest{
publicvoidtest(){
Listlist1=newArrayList();
list1.add(newField("A",1));
list1.add(newField("B",1));
list1.add(newField("C",1));
Listlist2=newArrayList();
list2.add(newField("A",2));
list2.add(newField("D",2));
list2.add(newField("E",2));
Listres=Join(list1,list2);
for(Fieldfield:res){
System.out.print(field.getName()+":"+field.getValue()+",");
}
}
publicstaticvoidmain(String[]args){
newTest().test();
}
publicstaticListJoin(Listlist1,Listlist2){
Listres=newArrayList();
Listlist2_=newArrayList(list2);
for(Fieldfield1:list1){
booleanhasSameOne=false;
for(Fieldfield2:list2){
if(field1.getName().equals(field2.getName())){
res.add(field1.add(field2));
list2_.remove(field2);
hasSameOne=true;
}
}
if(!hasSameOne)
res.add(field1);
}
res.addAll(list2_);
returnres;
}
publicclassField{
privateintvalue=0;
privateStringname;
publicField(Stringname,intvalue){
this.name=name;
this.value=value;
}
publicintgetValue(){
returnvalue;
}
publicStringgetName(){
returnname;
}
publicFieldadd(Fieldvalue){
returnnewField(this.getName(),this.getValue()+value.getValue());
}
}
}
㈩ java for循環 怎樣把一個list里相同的數據放到一起
通過題主的描述可以看到,其實就是一個List<Integer>的集合數據處理問題,希望把相同的數據放到一起,是一種歸類操作,也就是說其實總得需要把List<Integer>形式轉化為Map<Integer, List<Integer>>的形式
這種形式map的key也就是當前的這個數字,而這個value就是這個數字對應的所有當前出現此key的集合
List<Integer>list=Arrays.asList(1,1,2,3,4,2,1);
Map<Integer,List<Integer>>map=newHashMap<>();
for(Integernum:list){
//map是否包含此key,若已經包含則添加一個新的數字到對應value集合中
if(map.containsKey(num)){
map.get(num).add(num);
}else{
//map不包含此key,則重新創建一個新集合,並把這個數字添加進集合
//,再把集合放到map中
List<Integer>newList=newArrayList<>();
newList.add(num);
map.put(num,newList);
}
}
System.out.println(map);
輸出結果
結果也是一樣的,題主可以自行選擇