常见java的朋友?

时间:2015-09-04 19:58:58

标签: linker names

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

例如:

Damian之友= [Cristian,Pedro,Juan,Andres]

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

Lucas之友= [John,Damian,Andres,Francisco]

罗马之友= [Albert,Lourdes,Jennifer,Diego]

Diego的朋友= [Magali,Brian,Andrew,Peter]

Brian的朋友= [等等]

狮子座的朋友= [等等]

拉米罗之友= [等等]

佛朗哥之友= [等等]

我应该选择5个名字,我不得不说是否有任何共同的朋友以及名字是什么。名称将限制在约60。他们将成为团体的4个名字。

2 个答案:

答案 0 :(得分:1)

使用http://jsfiddle.net/6v4zzgjj/

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

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

参考这个答案 Collection#retainAll().

答案 1 :(得分:0)

我假设通用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
}