2016-01-08 76 views
0

我有两个不同的arraylist,我想比较 - 特别是检查列表2中是否存在list1的某个元素。为什么这个特定的代码比较arraylist不工作​​?

这是我的代码:

for (int i = 0; i < list1.size(); i++){ 
    if (list2.contains(list1.get(i))) { 
     System.out.println ("match"); 
    } 
} 

基本上我通过循环列表1 - 和检查,如果列表2包含列表1元。然而,这个if语句没有被执行 - 并且没有值为空。

逻辑和代码似乎对我很好。哪里不对?

+0

发布更多验证码。 –

+0

你正在打印一个空字符串'“”',打印'list1.get(i)'也许?你的列表包含什么对象?你必须在你的对象上实现'equals()'方法。 –

+0

这是列表中的完全相同的对象吗?即应该“等于”是真实的吗?你怎么知道它不工作?调试或println输出(因为你的println只会返回一个回车, – wmorrison365

回答

-1

(这是一个真正的评论。不幸的是,SE具有与答案和格式化选项评论之间的巧合耦合。)

这里是一个测试你的代码,但工作一个完整的程序的一个例子。为了清楚起见,我在匹配上打印了一个非空字符串。我建议通过用失败的案例替换列表来修改它。如果失败,请发布完整的程序。

import java.util.Arrays; 
import java.util.List; 

public class Test { 
    public static void main(String[] args) { 
    List<String> listA = Arrays.asList(new String[] { "job" }); 
    List<String> listB = Arrays.asList(new String[] { "bbb", "job" }); 
    System.out.println("One match"); 
    matcher(listA, listB); 
    } 

    public static void matcher(List<String> list1, List<String> list2) { 
    for (int i = 0; i < list1.size(); i++) { 
     if (list2.contains(list1.get(i))) { 
     System.out.println("Found one."); 
     } 
    } 
    } 
} 
+0

这是一个解决方案,但我不认为这里描述的问题或解决方案.. –

+0

@RuchiraGayanRanaweera不,这不是一个解决方案。这是一条评论,暗示了OP需要发布什么来获得解决方案。 –

+0

发布非答案的替代方法可能是将代码粘贴到某个可在线共享的代码片断主机中,以便将Java代码包含在您的评论中。 – CubeJockey

0

如果你想找到两个表之间的交集,更好的办法是使用retainAll方法。假设你有两个列表这样的:

List<String> list1 = asList("Martin", "Eric", "Kent"); 
List<String> list2 = asList("Kent", "Josh", "Eric"); 

下面的列表将保持两者之间的交集:

List<String> intersection = new ArrayList<>(list1); 
intersection.retainAll(list2); 

调用retainsAll后,路口将只包含KentEric

+2

它当然是更好的方法,但它不回答问题。 – Gimby

相关问题