共同好友 java?

Friends in common java?

我的想法是这样的。 我想创建一个脚本,链接共同的朋友

例如:

达米安的朋友 = [克里斯蒂安、佩德罗、胡安、安德烈斯]

安德烈斯的朋友 = [玛塞拉、达米安、朱利安、卡洛斯]

卢卡斯的朋友 = [约翰、达米安、安德烈斯、弗朗西斯科]

罗马之友 = [阿尔伯特、卢尔德、詹妮弗、迭戈]

迭戈的朋友 = [Magali、Brian、Andrew、Peter]

Brian 的朋友 = [等等]

狮子座的朋友 = [等等]

拉米罗的朋友们 = [等等]

佛朗哥之友 = [等]

我要select5个名字,有没有共同的朋友,名字都说一下。名称将被限制为大约 60 个。他们将是4个团体名称。

使用Collection#retainAll().

listA.retainAll(listB);
// listA now contains only the elements which are also contained in listB.

因此复制第一个列表并为所有五个列表重复 retainAll。 我认为这是一种简单的方法。

参考这个答案 Common elements in two lists

我假设常见 Java,你说的是 Java,而不是 Javascript。不管你怎么称呼它为脚本……一段代码也是在堆栈溢出问题上得到好的答案所必需的,我不知道你是在使用数组、列表,甚至是地图……我会给出一个答案对于每个。但是,请下次提问时提供更详细的信息。

列表有一个名为 contains() 的方法,您可以将对象传递给该方法。 从这里开始,有两种方法可以使用它,首选方法是通过列表

package com.gamsion.chris;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class SOListExample {
    public static void main(String[] args) {
        List<String> list1 = new ArrayList<String>();
        List<String> list2 = new ArrayList<String>();
        List<String> list3 = new ArrayList<String>();
        String name1 = "John";
        String name2 = "Chris";
        String name3 = "Madalyn";
        list1.add(name1);
        list2.add(name1);
        list2.add(name2);
        list3.add(name2);
        list3.add(name3);
        list1.add(name3);
        list2.add(name3);
        List<List<String>> lists = new ArrayList<List<String>>();
        lists.add(list1);
        lists.add(list2);
        lists.add(list3);
        System.out.println(getCommonFriends(lists));
    }

    public static List<String> getCommonFriends(List<List<String>> lists) {
        List<String> commonfriends = lists.get(0);
        Iterator<List<String>> it = lists.iterator();
        while(it.hasNext()){
            commonfriends.retainAll(it.next());
        }
        return commonfriends;
    }
}

这是我能给出的最佳答案。当然适应你的需要,它应该很适合。 (我只是把它作为一个可测试的例子。你得到这些列表的方式和数量完全取决于你。)据我所知,它也是最有效的,尽管最初的 "commonfriends = lists,get(0)" 确实让我很烦哈哈。

编辑:为下面的评论添加答案。

为此,建议添加另一种方法来比较两个列表,如下所示:

public static List<String> compareCommonFriends(List<String> list1, List<String> list2){
    list1.retainAll(list2);
    return list1;
}

此外,如果您想做一个如果找到了某些东西,无论是 compareCommonFreinds() 还是 getCommonFriends(),您可以这样做:

if(compareCommonFriends(list1, list2).isEmpty()){
    //your code
    }
    //OR
if(!compareCommonFriends(list1, list2).isEmpty()){
    //your code
}