javalist重復
❶ java中怎樣去除list中重復的數據,並且顯示重復數據的條數
很多集合處理,我都推薦用Java8的流來處理,是非常簡單易懂的
其實你這個問題,總來說就是按照集合中的字元串進行分類,並統計數量,Stream只用簡單的代碼就完成復雜的操作,代碼如下
List<String>list=Arrays.asList("day","walipo","day","walipo","legeand","day","douwbo","day","day");
Map<String,Long>collect=list.stream().collect(Collectors.groupingBy(Function.identity(),Collectors.counting()));
System.out.println(collect);
最後返回的Map就是以字元串為key,value為其個數
❷ java 項目 , List<實體>,需要獲取list中的重復數據
java項目中獲取list重復數據可以使用list的replicateIndex方法,實例如下:
public static void main(String[] args) throws Exception {
List<String> list = new ArrayList<String>();
list.add("123");
list.add("456");
list.add("555");
list.add("123");
list.add("444");
list.add("123");
// 輸出原 List 的內容
for (int i = 0; i < list.size(); i++) {
System.out.printf("%2d --> %s%n", i, list.get(i));
}
System.out.println("=============");
// 輸出查找重復元素的內容
int[] indexArray = replicateIndex(list, "123");
for (int index : indexArray) {
System.out.printf("%2d --> %s%n", index, list.get(index));
}
}
public static <T> int[] replicateIndex(List<T> list, T str) throws Exception{
List<T> tmp = new ArrayList<T>(list);
int[] index = new int[Collections.frequency(list, str)];
int start = tmp.indexOf(str);
int end = tmp.lastIndexOf(str);
int i = 0;
if(start < 0) {
throw new Exception("數組中不存在 " + str + " 元素!");
}
index[i] = start;
while (start != end) {
index[++i] = end;
tmp = tmp.subList(0, end);
end = tmp.lastIndexOf(str);
}
Arrays.sort(index);
return index;
}
❸ Java涓濡備綍鍘婚櫎List涓鐨勯噸澶嶇殑鍊
鐩存帴鏀懼叆set涓銆傚傛灉List鐨勬硾鍨嬫槸鍩烘湰綾誨瀷錛堝皝瑁呯被錛夋垨String錛屽彲浠ョ洿鎺ヨ繖鏍峰仛銆備絾鏄娉涘瀷鏄浣犺嚜宸卞啓鐨勭被錛屽氨闇瑕佷綘鎶婅繖涓綾婚噸鍐檈quals鍜宧ashCode鏂規硶銆
importjava.util.ArrayList;
importjava.util.LinkedHashSet;
importjava.util.List;
importjava.util.Set;
publicclassTest{
publicstaticvoidmain(String[]args){
/**
*鍒濆嬪寲涓涓ArrayList瀵硅薄錛屽叾鍏冪礌鏈夐噸澶嶇殑鍊箋
*/
List<String>list=newArrayList<String>();
list.add("a");
list.add("b");
list.add("a");
list.add("c");
list.add("d");
System.out.println("list="+list.toString());
/**
*鍒╃敤LinkedHashSet鐨勭壒鎬э紙鎸夌収瀛樺叆欏哄簭淇濆瓨錛屽苟淇濊瘉鍏冪礌涓嶉噸澶嶏級銆
*灝list浼犲叆LinkedHashSet鐨勬瀯閫犲櫒涓鍘繪帀閲嶅嶅厓緔
*/
Set<String>linkedHashSet=newLinkedHashSet<String>(list);
System.out.println("linkedHashSet="+linkedHashSet.toString());
/**
*灝linkedHashSet杞鎴ArrayList銆
*/
list=newArrayList<String>(linkedHashSet);
System.out.println("鍘婚噸澶嶅悗鐨list="+list);
System.out.println("闇瑕佹敞鎰忕殑鏄錛屽傛灉List鐨勬硾鍨嬬被鍨嬫槸鑷瀹氫箟綾誨瀷錛屼緥濡侾erson..絳夛紝闇瑕侀噸鍐Person綾葷殑equals鍜hashCode鏂規硶銆");
}
}
鏁堟灉錛
❹ java閲屾湁娌℃湁涓撻棬鍒ゆ柇List閲屾湁閲嶅嶇殑鏁版嵁
浣犲ソ錛屾棦鐒剁敤list浜嗭紝閭d箞灝變笉鎺掗櫎浼氶噸澶嶏紝鑰屼笖list鍙浠ユ槸瀵硅薄錛屼篃騫朵笉濂界『璁ゅ敮涓鎬э紝鍙浠ョ敤map鏉ヨ繘琛屽瓨鍌ㄧ『璁ゅ敮涓鎬с傚傛灉涓瀹氳佹妸list鍒ゆ柇鍑烘潵鐨勮瘽錛屽彲浠ュ弬鑰冧笅闈㈢殑灝忎緥瀛
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public static void main(String[] args)
{
List<String> list = new ArrayList<String>();
list.add("aa");
list.add("bb");
list.add("cc");
list.add("dd");
list.add("bb");
list.add("ee");
list.add("dd");
list.add("ff");
String temp = "";
for (int i = 0; i < list.size() - 1; i++)
{
temp = list.get(i);
for (int j = i + 1; j < list.size(); j++)
{
if (temp.equals(list.get(j)))
{
System.out.println("絎" + (i + 1) + "涓璺熺" + (j + 1) + "涓閲嶅嶏紝鍊兼槸錛" + temp);
}
}
}
}
❺ java里有沒有專門判斷List里有重復的數據
List是有序的可重復集合, 如果要判斷list中是否有一個元素 , 可以用 list.contains(obj)
如果只是為了判斷list中是否有重復 , 方法有很多種, 比如可以將list轉換為set
Set set = new HashSet<>(list);
set是無需不可重復的集合 , list轉成set之後 , 如果set的size比 list的size小 , 說明有重復元素
也可以遍歷list , 放入Map , 用list的泛型作為 map 的 key 類型 , 而出現的次數作為 map的value , 這樣就能很容易看出來 list中的元素有沒有重復 , 哪個有重復 , 重復了幾次
❻ Java濡備綍鍘繪帀List<瀹炰綋> 瀹炰綋閲岀殑閲嶅嶆暟鎹
鍋囪懼師鏁版嵁錛
Listuserlist....
鏂規硶1(涔熸槸鎴戞瘮杈冨父鐢ㄧ殑):
鏂板緩涓涓狶ist錛岄亶鍘嗗師list錛屽姞鍏ユ柊鐨刲ist
Listnewlist=newArrayList();
for(v:userlist){
if(!newlist.contains(v))
newlist.add(v);
}
...
鏂規硶2:鍒╃敤set闆嗗悎
Setset=newHashSet();
Listnewlist=newArrayList();
for(v:userlist){
if(set.add(v)){
newlist.add(v);
}
}
錛侊紒錛
鐧懼害鐪熷績鍧戝晩錛2015騫寸殑闂棰樼珶鐒朵篃鑳芥嬁鍑烘潵璁╁洖絳旓紒