優雅的找出ArrayList中重複的元素
故意強調了優雅,所以雙迴圈什麼的就別來了...先謝為敬
看到了群裡分享的程式碼,所有自己嘗試了一下,就當是技術積累啊,雖然還有四門期末考,但是還是技術對我的誘惑力更大,請再讓我內心默唸一百遍:考試全部順利通過,哈哈
方法1
程式碼:
import java.util.List; import java.util.ArrayList; /** * Created by cxh on 17/1/9. */ public class Main { public static void main(String[] args){ List<String> list = new ArrayList<String>(); list.add("aaa"); list.add("bbb"); list.add("ccc"); list.add("ddd"); list.add("aaa"); list.add("aaaa"); list.add("eee"); list.add("bbb"); list.add("ccc"); StringBuilder builder = new StringBuilder(); for(String str : list) { // 如果不存在返回 -1。 if(builder.indexOf(","+str+",") > -1) { System.out.println("重複的有:"+str); } else { builder.append(",").append(str).append(","); } } } }
執行結果:
重複的有:aaa
重複的有:bbb
重複的有:ccc
方法2
程式碼如下:
package netmethod; import java.util.List; import java.util.ArrayList; import java.util.HashMap; /** * Created by cxh on 17/1/9. */ public class Main { public static void main(String[] args){ List<String> list=new ArrayList<String>(); list.add("string1"); list.add("string2"); list.add("string3"); list.add("string1"); list.add("string1"); list.add("string1"); list.add("string2"); //list.add("string3"); HashMap<String,Integer> hashMap=new HashMap<String, Integer>(); for(String string:list){ if(hashMap.get(string)!=null){ //hashMap包含遍歷list中的當前元素 Integer integer=hashMap.get(string); hashMap.put(string,integer+1); System.out.println("the element:"+string+" is repeat"); } else{ hashMap.put(string,1); } } } }
執行結果:
the element:string1 is repeat
the element:string1 is repeat
the element:string1 is repeat
the element:string2 is repeat
方法3
因為我沒有用java8,所以idea不支援stream,所有此方法沒有驗證,暫時儲存啦。
程式碼如下:
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Main { public static <E> List<E> getDuplicateElements(List<E> list) { return list.stream() // list 對應的 Stream .collect(Collectors.toMap(e -> e, e -> 1, (a, b) -> a + b)) // 獲得元素出現頻率的 Map,鍵為元素,值為元素出現的次數 .entrySet().stream() // 所有 entry 對應的 Stream .filter(entry -> entry.getValue() > 1) // 過濾出元素出現次數大於 1 的 entry .map(entry -> entry.getKey()) // 獲得 entry 的鍵(重複元素)對應的 Stream .collect(Collectors.toList()); // 轉化為 List } public static void main(String[] args) throws Exception { List<String> list = Arrays.asList("a", "b", "c", "d", "a", "a", "d", "d"); List<String> duplicateElements = getDuplicateElements(list); System.out.println("list 中重複的元素:" + duplicateElements); } }
執行結果:
list 中重複的元素:[a,d]
相關推薦
優雅的找出ArrayList中重複的元素
故意強調了優雅,所以雙迴圈什麼的就別來了...先謝為敬 看到了群裡分享的程式碼,所有自己嘗試了一下,就當是技術積累啊,雖然還有四門期末考,但是還是技術對我的誘惑力更大,請再讓我內心默唸一百遍:考試全部
陣列:找出陣列中重複元素最多的數
題目描述: 如何找出陣列中重複元素最多的數 思路: 使用Map對映表記錄每一個元素出現的次數,然後判斷次數大小,進而找出重複次數最多的元素。key表示陣列的元素,value表示這個元素在陣列中出現的次數。最後對map進行遍歷。 程式碼: /** * 使用map
如何找出陣列中重複元素最多的數
package java程式設計師面試筆試寶典; import java.util.Collections; import java.util.HashMap; import java.util.Ma
javaSE (三十二)找出字串中重複的元素並寫入檔案、模擬正版軟體使用次數期限、獲取資料夾下的全部java檔案
1、找出字串中重複的元素並寫入檔案: 問題:鍵入(或者從一個檔案中讀取)一個字串,找出字串中重複的元素並寫入檔案 思路: 鍵入字串 map儲存 寫入檔案 程式碼: package cn.njupt; /* * * 鍵入一串字元,計算每個字元出
找出陣列中重複次數最多的元素
思路: 最簡單的方法就是定義一個數組b把相同的元素放到對應位置,如果陣列a的元素等於這個下標,那麼這個下標對應的值就加1,最後找出這個陣列中最大值返回下標,這個方法浪費很大空間,不推薦。 新的思路:採用map,定義一個map,初始值預設為0,迴圈遍歷陣列a,
劍指Offer-3 找出陣列中重複的數字
題目: 給定一個長度為 n 的整數陣列 nums,陣列中所有的數字都在 0∼n−1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意一個重複的數字。 注意:如果某些數字不在 0∼n−1 的範圍內,或陣列中不包含重複數字,則返回 -1
Day14找出陣列中重複的資料
problem describe: 給定一個整數陣列 a,其中1 ≤ a[i] ≤ n (n為陣列長度), 其中有些元素出現兩次而其他元素出現一次。 找到所有出現兩次的元素。 你可以不用到任何額外空間並在O(n)時間複雜度內解決這個問題嗎? solution:
劍指offer 1. 找出陣列中重複的數字
給定一個長度為 n 的整數陣列 nums,陣列中所有的數字都在 0∼n−1 的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。 請找出陣列中任意一個重複的數字。 注意:如果某些數字不在 0∼n−1 的範圍內,或陣列中不包含重複數字,則返回 -1;
刪除一張表中重複的值以及查找出表中重複兩條以上的資料
-- SELECT MIN(id) FROM ctydetail GROUP BY originalcode HAVING COUNT(originalcode) > 1 -- SELECT originalcode FROM ctydetail GROUP BY o
第一題:找出列表中兩元素的和為一定值的元素下標
題目: Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each inpu
找出陣列中重複次數最多的數
方法一:如果相同的數是連續出現 從第一個數開始,與它後面的數比較,如果相同,計算+1,如果不等,計數置為1.同時保持此時的計數次數和此時的元素; #include<stdio.h> in
怎樣找出集合中所有子集,怎樣找出集合中指定元素的所有子集?
集合中的組合演算法 Java 沒有自帶的求一個集合的所有子集的方法,我們可以通過集合的子集規律來求。 思路: 對集合中所有元素進行標記,0表示未選中,1表示選中。 示例: 集合{1,2,3,4},長度為4,則 0000表示一個都不選,0001表示選數集合中第一個元素
燒腦資料庫演算法題 Postgresql 找出陣列中重複的手機號
備註:此演算法也適用於人脈搜尋(比如共同的好友等) so 思想很重要,工具不重要,思想錯了幹得再多也是白乾.有了思想你也可以無限擴充套件 搜尋人脈關係比查重複的手機號快的多,重複的手機號畢竟要全表比較,人脈搜尋關係只需要掃描相關的資料即可,估計應該可以在10
找出陣列中不同元素並統計相同元素的個數
public void getDifference(int[] arr) { Dictionary<int, int> dic= new Dictionary<int, int>();
如何找出陣列中重複次數最多的數
eg 陣列{1,1,2,2,3,4,4,4,4,5,5,5,6,6} 元素1出現的次數為2, 元素2出現的次數為2,元素3出現的次數為1,元素4出現的次數為4,元素5出現的次數為3,元素6出現的次數
python-2.找出陣列中重複的數字
題目描述: 在一個長度為n的數組裡的所有數字都在0~n-1的範圍內,陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出數字中任意一個重複的數字。例如,如果輸入長度為
問題8:如何找出陣列中重複次數最多的數?
一種方法是以空間換時間,可以定義一個數組 int count[MAX],並將其陣列元素都初始化為0,然後執行for(int i=0; i<100; i++) count[A[i]]++操作,在count中找最大的數,即為重複次數最多的數。 程式碼如下:
找出陣列中唯一的重複元素
題目:陣列 arr[N],1 至 N 這 N - 1 個數存放在 arr[N] 中,其中某個數重複一次,寫一個函式,找出重複的數字。要求每個陣列元素只能訪問一次,不用輔助儲存空間。 分析:由於題目要求每個陣列元素只能訪問一次,不用輔助儲存空間,可以從原理上入手
資料結構——陣列(5)找出陣列中唯一重複的數(元素範圍1~1000)
這個題目本身就有一定侷限性。比如,對於陣列a[10001],其中,1000個數就是1~1000的每個數,可以任意排列,然後再多一個重複的數。題目就是怎麼求出這個特殊的重複的數。 這一類問題的解決思路主要有以下幾種: 方法一:先求和,再相減。即陣列元素值求和,
Problem B: 零起點學演算法81——找出陣列中最大元素的位置(下標值
#include<stdio.h> int main(void) { int n,a[10],i,max; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) scanf("%d",