thinking in java ---11.持有对象

1.集合添加元素的首选方式:

Collections.addAll(collection,T...);

collection.addAll()成员方法只能接受另一个Collectino对象作为参数,因此它不如Arrays.asList()或Collections.addAll,这两个方法使用的都是可变参数列表。

2.当使用Arrays.asList时返回的时大小固定的list,所以不能使用add或者addAll.

当多重继承,Arrays.asList()返回的类型是父类,如果是双重继承,编译器会报错,Collections.addAll不得

class Snow {}
class Powder extends Snow {}
class Light extends Powder {}
class Heavy extends Powder {}
class Crusty extends Snow {}
class Slush extends Snow {}
public class AsListInference {
public static void main(String[] args) {
List<Snow> snow1 = Arrays.asList(
new Crusty(), new Slush(), new Powder());
// Won’t compile:
// List<Snow> snow2 = Arrays.asList(
// new Light(), new Heavy());
// Compiler says:
// found : java.util.List<Powder>
// required: java.util.List<Snow>
// Collections.addAll() doesn’t get confused:
List<Snow> snow3 = new ArrayList<Snow>();
Collections.addAll(snow3, new Light(), new Heavy());

Array 输出更输入顺序一样,Hash无序但是很快,TreeSet有小到大,LinkedHashSet按照插入排序

3.迭代器统一了对容器的访问方式

List有更加强大的ListIterator,可以previous()双向移动,还可以替换用set(),可以产生一个指向某一个Index的ListIterator(n);

4.linkedList可以用来作为stack,queue or a double-ended queue

getFirst()和element()一样的,返回头不remove,如果为空throw nosuchelementexception

peek()小些不一样的是,返回头部,如果不存在则不抛异常,返回null

removeFirst()和remove()一样的,返回头并且删除,如果为空抛出异常

poll()也是返回并且删除第一个,但是没有会返回null

addFirst()在顶部添加一个元素

offer()和add()和addLast()一样,在末尾添加一个元素

removeLast()移除并返回

5.queue和priorityqueue  队列和优先队列 

6.实现iterable接口可以使用foreach语法

如果要使用for each反向遍历或者其他的

class ReversibleArrayList<T> extends ArrayList<T> {
    public ReversibleArrayList(Collection<T> c) { super(c); }
    public Iterable<T> reversed() {
        return new Iterable<T>() {
            public Iterator<T> iterator() {
                return new Iterator<T>() {
                    int current = size() - 1;
                    public boolean hasNext() { return current > -1; }
                    public T next() { return get(current--); }
                    public void remove() { // Not implemented
                    throw new UnsupportedOperationException();
                   }
                };
            }
        };
     }
}

7.总结,java保存对象:数组(array)需定义类型长度,不能resize;Collection保存单一元素,可修改长度,自动装拆箱

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值