add()方法将添加一个新元素。注意这个方返回一个boolean,但是返回值不是表示添加成功与否。仔细阅读doc可以看到,Collection:如果一个集合添加这个元素,无论任何原因,都必须抛出异常。这个返回值表示的意义是add()方法执行后,集合的内容是否改变了(就是元素有无数量,等变化),这是由具体类实现的。即:如果方法出错,总会抛出异常;返回值仅仅表示该方法执行后这个Collection的内容有无变化。
Object[] toArray()方法很简单,把集合转换成数组返回。Object[] toArray(Object[] a)方法就有点复杂了,首先,返回的Object[]仍然是把集合的所有元素变成的数组,但是类型和参数a的类型是相同的,比如执行:
其次,如果参数a的大小装不下集合的所有元素,返回的将是一个新的数组。如果参数a的大小能装下集合的所有元素,则返回的还是a,但a的内容用集合的元素来填充。尤其要注意的是,如果a的大小比集合元素的个数还多,a后面的部分全部被置为null。
奥秘在于客户端自身不遍历集合的指针,所有的内部状态(如当前元素,是否有下一个元素)都由Iterator来,而这个Iterator由集合类通过工厂方法生成,因此,它知道如何遍历整个集合。蒋梦婕天天向上
本文由 325游戏(m.325games.com)整理发布
网友评论 ()条 查看