将新对象分配给通用数组索引

时间:2016-02-07 04:46:39

标签: java arrays generics

我的意见是我对这个主题的标题不合适。让我解释。这样做的目的是复制一个" Profile"应用程序,我有个人资料,你也愿意。我们都有自己的粉丝,在这个例子中,我们都互相关注。这种方法需要返回的是一个交叉引用,基于你不遵循的对象。我需要这个方法向我返回一个我在数组中没有的推荐Profile对象。现在,我在特定方法中遇到一行代码很困难。

我的一个类是一个Set类,它实现了SetInterface(由我的教授提供)以及实现Profile的{​​{1}}类,该类也提供了。在我的ProfileInterface类的代码中,我有以下对象:Profile它使用我的private Set<ProfileInterface> followBag = new Set<ProfileInterface>();类中的数组包方法和Set方法制成。

这是方法(不完整,但无法解释我的问题,无法进一步移动):

ProfileInterface

此方法的目的是解析数组(此示例为public ProfileInterface recommend(){ Set<ProfileInterface> recommended; ProfileInterface thisProfile = new Profile(); for(int index = 0; index < followBag.getCurrentSize(); index++){ Set<ProfileInterface> follows = followBag[index].toArray(); for(int followedFollowers = 0; followedFollowers < follows.getCurrentSize(); followedFollowers++) { if() //if Profile's do not match, set recommended == the Profile } } return recommended; } ),然后取出每个子Profile并执行类似的操作。其原因很像&#34; Twitter&#34;,&#34; Facebook&#34;或&#34; LinkedIn&#34 ;;每个Profiles都有粉丝。此方法旨在查看最高Profile个跟随,并查看这些子Profile是否有任何跟随者不会跟随最高的跟随者。然后,此方法将返回Profile作为建议遵循的方法。这是我第一次处理Profile数据结构以及泛型。通过&#34; IntelliJ&#34;,我收到了行Array Bag的错误。让我解释一下这条线的原因。我想要做的是采取&#34;我的&#34;个人资料(在此示例中),并查看我关注的人。对于每个关注的配置文件(或Set<ProfileInterface> follows = followBag[index].toArray();),我希望看看是否followBag[index]并继续解析数组以查看它是否匹配。但是,由于我对泛型和数据包数据结构的混淆,我在解决这个问题时遇到了很大的困难。

我想做以下事情:

followBag[index][index] == followBag[index]

我的问题是我不知道如何正确创建一个允许我返回此对象的//for all of my followers //look at a particular followed profile //look at all of that profile's followers //if they match one of my followers, do nothing //else //if they don't match, recommend that profile //return that profile or null 类型的对象    (在上面的方法中,行Profile

我试图将我的Set<ProfileInterface> follows = followBag[index].toArray();的索引设置为一个对象,以后可以比较我的困难。我真的很感激有关如何做到这一点的任何见解。

非常感谢所有帮助和干杯!

1 个答案:

答案 0 :(得分:0)

当你这样做时:

Set<ProfileInterface> follows = followBag[index].toArray();

您尝试将Set用作Array。但你不能。 Java不允许,因为SetArray是不同的类,Set不支持[]语法。 这就是你得到错误的原因。要将followBag用作Array,您必须将其转换为:

ProfileInterface[] profileArray = followBag.toArray(new ProfileInterface[followBag.size()]);

for(int i=0; i<profileArray.length; i++){
   ProfileInterface profile = profileArray[i];
   //do what you would like to do with array item
}

我相信,在您的情况下,您根本不需要将Set对象分配给通用Array。因为您可以按原样枚举Set

public class Profile {

    private Set<ProfileInterface> followBag = new HashSet<Profile>();

    ...

    public Set<ProfileInterface> recommended(){
        Set<ProfileInterface> recommendSet = new HashSet<ProfileInterface>();
        for(Profile follower : followBag){
            for(Profile subfollower : follower.followBag){
                if(!this.followBag.contains(subfollower)){
                    recommendSet.add(subfollower);
                }
            }
        }
        return recommendSet;
    }    
}

我还添加了返回推荐配置文件列表的可能性,因为可能有几个。