重復數字java
Ⅰ 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);
輸出結果
結果也是一樣的,題主可以自行選擇
Ⅱ 求救,有四個數 1,2,3,5,任意相加(可以重復)等於一個固定值N(<15),列出所有可能組合,用java實現!
演算法如下:N=1+1+1+1+1+...+1(共N個1) 一種
若N-1>0 N=2+1+1+1+1+...+1(共N-1個1)N-1種(兩個1換個2)
若N-2>0 N=3+1+1+1+...+1(共N-2個1)N-2種(三個1換個3)
若N-4>0 N=5+1+...+1(共N-4個1)N-4種(五個1換個5,還有2,3換5的情況)
5=(2+3)=(3+2)=(1+2+2)=(2+1+2)=(2+2+1) 5種
故N>=5時有 5*(N-4) + (N-2) + (N-1) + 1
求組合也是差不多,替換就行
Ⅲ java一個txt文檔中有100個手機號,有可能會有重復的,如何用最快的方法找出重復的
建立一顆樹,建立的過程為:
1)開始的時候樹是空的。
2)逐個讀取手機行,比如讀入一個手機號為:12345678900,在樹中插入這個手機號後,樹為:
root
└─1
└─2
└─3
└─4
└─5
└─6
└─7
└─8
└─9
└─0
└─0
3)插入若干手機號後,樹可能是這樣的:
root
└─1
├─2
│ └─3
│ └─4
│ └─5
│ └─6
│ ├─6
│ │ └─8
│ │ └─9
│ │ └─0
│ │ ├─0
│ │ └─1
│ └─7
│ └─8
│ └─9
│ └─0
│ ├─0
│ └─1
├─5
│ └─3
│ └─4
│ └─5
│ └─6
│ └─7
│ └─8
│ └─9
│ └─0
│ └─0
└─7
└─3
└─4
└─5
└─6
└─7
└─8
└─9
這顆數一共有 6 個手機號,分別是:
12345668900
12345668901
12345678900
12345678901
15345678900
17345678900
4)判斷一個手機號是不是重復的,只要在這顆樹裡面,逐層逐個數字查找就可以了。
5)效率分析:這種演算法,插入一個新的手機號,以及查找一個手機號是否重復,效率都是很高的。
Ⅳ java int數組中 移除指定重復的數字
上段粗糙的代碼:
publicstaticint[]removeCu(inta){
//通過指定數字a刪除它
//比如這個數字為3
ArrayListlst=newArrayList();
for(inti=0;i<coun.length;i++){
if(coun[i]!=a){
lst.add(coun[i]);
}
}
int[]rs=newint[lst!=null?lst.size():0];
for(intj=0;j<rs.length;j++){
rs[j]=Integer.parseInt(lst.get(j).toString());
}
System.out.println(Arrays.toString(rs));
returnrs;
}
Ⅳ java中怎麼樣子找出數組中重復的數,並去除
其實只要遍歷數組,然後放進set集合內即可實現。
比如:
//set集合可以自動去重
Integer[] a = {1, 2, 2 , 19, 19, 8, 9};
Set<Integer> set = new HashSet<Integer>();
for(Integer i : a)
set.add(i);
for(Object s: set.toArray())
System.out.print(s+ " ");
}