问题:想要从俩个ArrayList中得到重复元素,已经重复的个数!
使用retainAll 此函数的作用是:
removeAll和retainAll 删除或保留ArrayList中包含Collection c中的的元素,这两个方法都依赖batchRemove(Collection<?> c, boolean complement)实现。
这里有关于ArrayList的源码解读
public class TestArrayList { public static void main(String[] args) { //初始化a1,a2,a3 ArrayLista1 = 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 ArrayListbeforeUserArrayList = 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(); }