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骞寸殑闂棰樼珶铹朵篃鑳芥嬁鍑烘潵璁╁洖绛旓紒