首页 > 代码库 > CoreJava_Collection接口中的add是有返回值的!

CoreJava_Collection接口中的add是有返回值的!

    今天跟朋友讨论一个小的知识点,发现很多人不知道collection接口中定义的add方法是有返回值的,大家都是工作很多年的Java从业人员了,对公用接口的不熟悉会让自己在细节上吃亏的。这让我想到了刚入行的时候的一个小面试,另外一个项目的项目经理神秘兮兮的问,jdbc调用sql执行完成之后,返回什么值?


    返回什么值?这个问题确实难到我了,但是联想一下,一般在数据库当中执行到最后一步的时候,尤其是mysql数据库中,执行了一条语句之后,控制面板一般都会输出一个‘当前操作影响了X条记录之类‘,比如,插入了一条数据,后台会输出,当前影响了1条记录。于是就尝试着猜了一下,‘应该是返回对数据库的影响条数吧?‘。于是当时就被稀里糊涂的分配到另外一个相对比较锻炼人的项目上了,当时好像很少有人能够回答出来。通过这个事情,还是能够说明思维的发散在我们的职业生涯中还是非常有用的。


    回过头来说collection这个接口,为什么会返回一个boolean值。对于set而言,有一个特性就是能够排除相同的元素。这里面有两个比较重要的知识点是一定要搞明白的,第一个是 如何判断一个对象是相等的?第二个是散列表的原理,具体的问题带着疑问去百度吧。


    下面是一个小例子,细节决定成败,与君共勉。

import java.util.Collection;
import java.util.HashSet;

public class CollectionInterface {
    public static void main(String[] args) {
        int[] arrays = new int[]{1,2,3,4,5,6,7,8,9,10,1,2,3,4,5};
        Collection<Integer> set = new HashSet<Integer>();
        int counter = 0;
        for(int temp :arrays){
            if(set.add(temp)){
                counter++;
            }else{
                System.out.println("The date "+temp+" has already been existent,discard it.");
            }
        }
        System.out.println("counter=> "+counter);
        System.out.println("set.size()=> "+set.size());
    }
}