![](/img/trans.png)
[英]How to compare two Arraylists which contain objects of the same class in Java?
[英]Compare two arraylists in java which have partial common values
我有一個數組列表,其值為:
IT基礎設施
團隊
Wave 分析入門套件
博客文章
實例探究
信息圖表
Grazitti 網站開發-改造
另一個數組列表的值為:
Wave Analytics 入門套件56:00:00
IT基礎設施01:00:00
團隊08:00:00
博文21:30:00
案例研究02:30:00
信息圖表02:45:00
Grazitti 網站開發-改造11:00:00
內容營銷03:00:00
頁外內容04:30:00
SMM05:00:00
來賓博客01:30:00
連線 1600:30:00
Alteryx 啟發大會 201625:30:00
PPC02:00:00
培訓13:45:00
我可以比較它們以獲得輸出為:
IT基礎設施01:00:00
團隊08:00:00
Wave Analytics 入門套件56:00:00
博文21:30:00
案例研究02:30:00
信息圖表02:45:00
Grazitti 網站開發-改造11:00:00
以下代碼沒有給出所需的輸出:
for(int c =0; c<extractedvalue.size(); c++){
System.out.println(extractedvalue.get(c));
if (extractedvalue.contains(hoursplusprojects.get(c))){
System.out.println(hoursplusprojects.get(c));
}
這是一個 O(nm) 的解決方案。 n 和 m 是數組的大小。 該解決方案適用於兩個數組具有您在問題中說明的結構的情況。
List<String> l1 = new ArrayList<String>();
//update l1
List<String> l2 = new ArrayList<String>();
//update l2
List<String> results = new ArrayList<String>();
for(String s1 : l1){
for(String s2 : l2){
if(s2.contains(s1)){
results.add(s2);
}
}
//print the results
for(String r : results){
System.out.println(r);
}
請檢查以下解決方案。 如果您有任何問題,請提問。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<String> extractedvalue =Arrays.asList
("IT Infrastructure",
"Teams",
"Wave Analytics Starter Kit",
"Blog Post",
"Case Studies",
"InfoGraphics",
"Grazitti Site Development-Revamp");
List<String> hoursplusprojects =Arrays.asList
("Wave Analytics Starter Kit56:00:00",
"IT Infrastructure01:00:00",
"Teams08:00:00",
"Blog Post21:30:00",
"Case Studies02:30:00",
"InfoGraphics02:45:00",
"Grazitti Site Development-Revamp11:00:00",
"Content Marketing03:00:00",
"Off-Page Content04:30:00",
"SMM05:00:00",
"Guest Blog01:30:00",
"LiNC 1600:30:00",
"Alteryx Inspire Conference 201625:30:00",
"PPC02:00:00",
"Training13:45:00");
List<String> output=new ArrayList<String>();
for (String extractedvalueItem : extractedvalue) {
for(String hoursplusprojectItem : hoursplusprojects){
if(hoursplusprojectItem.startsWith(extractedvalueItem)){
output.add(hoursplusprojectItem);
}
}
}
System.out.println("EXTRACTEDVALUE:");
print(extractedvalue);
System.out.println("HOURSPLUSPROJECTS:");
print(hoursplusprojects);
System.out.println("OUTPUT");
print(output);
}
private static void print(List<String> list){
for (String item : list) {
System.out.println(item);
}
System.out.println();
}
}
這是一些示例代碼的正確答案:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class Test {
public static void main(String ...args){
List<String> a = new ArrayList<String>();
a.add("abc");
a.add("def");
a.add("ghi");
a.add("jkl");
List<String> b = new ArrayList<String>();
b.add("abc 123");
b.add("def 456");
b.add("ghi 789");
b.add("xyz 111");
Map<String, String> map = new HashMap<String, String>();
for (String item: b){
map.put(strip(item), item);
}
Iterator<Map.Entry<String, String>> iter = map.entrySet().iterator();
while (iter.hasNext()){
Entry<String, String> entry = iter.next();
if (!a.contains(entry.getKey())){
iter.remove();
}
}
System.out.println(map.values());
}
private static String strip(String input){
return input.split(" ")[0];
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.