找出两个字符串数组中的相同元素
生活随笔
收集整理的這篇文章主要介紹了
找出两个字符串数组中的相同元素
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
public static List<String> getAllSameElement1(String[] strArr1,String[] strArr2) { if(strArr1 == null || strArr2 == null) { return null; } List<String> strList1 = new ArrayList<String>(Arrays.asList(strArr1)); //----------代碼段1 List<String> strList2 = new ArrayList<String>(Arrays.asList(strArr2)); //--------------代碼段2
strList1.retainAll(strList2); return strList1; } 由 于最近看見一文章,是描述數據庫mergeJoin?的掃描方式的,仿照里面的大致邏輯自己寫了<br>? ??? 個類似的方法。如果數組大的話,這個要比getAllSameElement1好? ????
???????? 大致思路是:1.首先將兩個數組A、B排序(遞增)<br>? ????????????????? 2.分別從A和B中各取出一元素a,b,對a和b進行比 較:<br>? ???????????????????? 1) 如果a與b相等,則將a或b存入一指定集合中<br>? ??????????????????? 2)如果a小于b,則繼續取A的下一元素,再與b比 較<br>? ??????????????????? 3) 如果a大于b,則取B的下一個元素,與a進行比較<br>? ???????????????? 3.反復進行步驟2,知道A或B的元素都比較完<br>? ???????????????? 4.返回集合(存了相同的元素)<br> public static List<String> getAllSameElement2(String[] strArr1,String[] strArr2) { if(strArr1 == null || strArr2 == null) { return null; } Arrays.sort(strArr1); Arrays.sort(strArr2); List<String> list = new ArrayList<String>(); int k = 0; int j = 0; while(k<strArr1.length && j<strArr2.length) { if(strArr1[k].compareTo(strArr2[j])==0) { if(strArr1[k].equals(strArr2[j]) ) { list.add(strArr1[k]); k++; j++; } continue; } else if(strArr1[k].compareTo(strArr2[j])<0){ k++; } else { j++; } } return list; }
另一種實現,數組比較大的情況下
來自:http://blog.sina.com.cn/s/blog_76ce6f790100pais.html
轉載于:https://www.cnblogs.com/dingchenghong/archive/2012/05/25/2517598.html
總結
以上是生活随笔為你收集整理的找出两个字符串数组中的相同元素的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的20132014
- 下一篇: 2016国内移动广告平台排行榜