Java 持有对象-容器总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/loverycjj/article/details/79859598

Java提供了大量持有对象的方式:

  • 数组将数字与对象联系起来。它保存类型明确的对象,查询对象时,不需要对结果做类型转换。它可以是多维的,可以保存基本类型的数据。但是,数组一旦生成,其容量就不能改变。
  • Collection保存单一的元素,而Map保存相关联的键值对。有了Java的泛型,你就可以指定容器中存放的对象类型,因此你就不会将错误的数据类型的对象放置到容器中,并且在从容器中获取元素时,不必进行类型转换。各种Collection和各种Map都可以在你向其中添加更多的元素时,自动调整尺寸。容器不能持有基本类型,但是自动包装机制会仔细地执行基本类型到容器中所持有的包装器类型之间的双向转换。
  • 像数组一样,List也建立数字索引与对象的关联,因此,数组和List都是排好序的容器。List能自动扩充容量。
  • 如果要进行大量的随机访问,就使用ArrayList;如果要经常从表中间插入或删除元素,则应该使用LinkedList。
  • 各种Queue以及栈的行为,都可由LinkedList提供支持。
  • Map是一种将对象(而非数字)与对象相关联的设计。HashMap设计用来快速访问;而TreeMap保持“键”始终处于排序状态,所以没有HashMap快。LinkedHashMap保持元素插入的顺序,但是也是通过散列提供了快速访问能力。
  • 新程序中不应该使用过时的Vector,Hashtable和Stack

下面是通过LinkedList实现的Stack代码

public class Stack<T> {
    private LinkedList<T> storage = new LinkedList<T>();
    public void push(T t) {
        storage.addFirst(t);
    }
    public T peek(){
        return storage.getFirst();
    }
    public T pop(){
        return storage.removeFirst();
    }
    public boolean empty(){
        return storage.isEmpty();
    }
    public String toString(){
        return storage.toString();
    }
}

最后是一张Java容器的简图

这里写图片描述

猜你喜欢

转载自blog.csdn.net/loverycjj/article/details/79859598