Java比较两个列表

我有两个列表(不是Java列表,可以说两列)

例如

**List 1**            **Lists 2**

milan hafil

dingo iga

iga dingo

elpha binga

hafil mike

meat dingo

milan

elpha

meat

iga

neeta.peeta

我想要一个返回多少个相同元素的方法。对于此示例,它应该为3,并且应该返回列表的相似值和不同的值。

如果是,我应该使用哈希图,然后用什么方法获得结果?

请帮忙

PS:这不是学校作业:)因此,如果您只是指导我就足够了

回答:

编辑

这是两个版本。一种使用ArrayList,另一种使用HashSet

比较它们并从中创建您自己的版本,直到获得所需的内容。

这应该足以覆盖以下内容:

PS:这不是学校作业:)因此,如果您只是指导我就足够了

您的问题的一部分。

继续原始答案:

您可以为此使用java.util.Collectionjava.util.ArrayList

该中的retainAll方法执行以下操作:

仅保留此集合中包含在指定集合中的元素

看到这个例子:

import java.util.Collection;

import java.util.ArrayList;

import java.util.Arrays;

public class Repeated {

public static void main( String [] args ) {

Collection listOne = new ArrayList(Arrays.asList("milan","dingo", "elpha", "hafil", "meat", "iga", "neeta.peeta"));

Collection listTwo = new ArrayList(Arrays.asList("hafil", "iga", "binga", "mike", "dingo"));

listOne.retainAll( listTwo );

System.out.println( listOne );

}

}

编辑

对于第二部分(相似的值),可以使用removeAll方法:

删除此集合的所有元素,这些元素也包含在指定集合中。

第二个版本也为您提供相似的值,并处理重复的值(通过丢弃它们)。

这次Collection可能是a Set而不是a List(不同之处在于Set不允许重复的值)

import java.util.Collection;

import java.util.HashSet;

import java.util.Arrays;

class Repeated {

public static void main( String [] args ) {

Collection<String> listOne = Arrays.asList("milan","iga",

"dingo","iga",

"elpha","iga",

"hafil","iga",

"meat","iga",

"neeta.peeta","iga");

Collection<String> listTwo = Arrays.asList("hafil",

"iga",

"binga",

"mike",

"dingo","dingo","dingo");

Collection<String> similar = new HashSet<String>( listOne );

Collection<String> different = new HashSet<String>();

different.addAll( listOne );

different.addAll( listTwo );

similar.retainAll( listTwo );

different.removeAll( similar );

System.out.printf("One:%s%nTwo:%s%nSimilar:%s%nDifferent:%s%n", listOne, listTwo, similar, different);

}

}

输出:

$ java Repeated

One:[milan, iga, dingo, iga, elpha, iga, hafil, iga, meat, iga, neeta.peeta, iga]

Two:[hafil, iga, binga, mike, dingo, dingo, dingo]

Similar:[dingo, iga, hafil]

Different:[mike, binga, milan, meat, elpha, neeta.peeta]

如果它不能完全满足您的需求,则可以为您提供一个良好的开端,因此您可以从这里开始。

给读者的问题:您将如何包括所有重复的值?

分享改善这个答案

以上是 Java比较两个列表 的全部内容, 来源链接: utcz.com/qa/416937.html

回到顶部