问题:想要从俩个ArrayList中得到重复元素,已经重复的个数!
使用retainAll 此函数的作用是:
removeAll和retainAll 删除或保留ArrayList中包含Collection c中的的元素,这两个方法都依赖batchRemove(Collection> c,boolean complement)实现。
public class TestArrayList {
public static void main(String[] args) {
//初始化a1,a2,a3
ArrayList a1 = new ArrayList(Arrays.asList(1,2,3,4,5,6));
ArrayList a2 = new ArrayList(Arrays.asList(1,2,3,4));
ArrayList a3 = new ArrayList();
//把a1的元素全加到a3里
a3.addAll(a1);
//把a2,a3的共同元素保存到a3
a3.retainAll(a2);
System.out.println(a3);
}
}
在我的代码中的具体应用如下:
/**
* 此userId之前的用户加入了此eventId的用户中。有多少是他的关注者
* @param eventId
* @param userId
* @return
* @throws Exception
*/
public static int GetFollowingCountInThisEvent(String userId,String eventId) throws Exception
{
/*String eventId;String userId;
eventId ="18177707";
userId = "54172324";*/
//第一步:得到用户eventId的所有participants
ArrayList beforeUserArrayList = GetParticipantsByEventId(userId, eventId);
//第二步: 得到用户userId的所有following
System.out.println("开始获取用户的FollowingUser");
ArrayList userFollowingArralyList = CollectUserInfo.getUserFollowingUserByUserId(userId) ;
//第三步: 俩个ArrayList中重复的人数:
ArrayList userCommonArrayList = new ArrayList();
userCommonArrayList.addAll(beforeUserArrayList);
userCommonArrayList.retainAll(userFollowingArralyList);
for(String a : userCommonArrayList){
System.out.println("共同的用户为"+a);
}
return userCommonArrayList.size();
}