我的意见是我对这个主题的标题不合适。让我解释。这样做的目的是复制一个" 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();
的索引设置为一个对象,以后可以比较我的困难。我真的很感激有关如何做到这一点的任何见解。
非常感谢所有帮助和干杯!
答案 0 :(得分:0)
当你这样做时:
Set<ProfileInterface> follows = followBag[index].toArray();
您尝试将Set
用作Array
。但你不能。
Java不允许,因为Set
和Array
是不同的类,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;
}
}
我还添加了返回推荐配置文件列表的可能性,因为可能有几个。