美文网首页
JavaSE梳理十:持有对象

JavaSE梳理十:持有对象

作者: 今天比昨天努力 | 来源:发表于2019-11-19 21:37 被阅读0次

    Java有多种方式保存对象,确切的说是对象的引用。譬如数组是保存一组对象的最有效的方式,但是数组有固定的尺寸,不适合不确切的场景。Java容器类库作用于“保存对象”,划分为两种:Collection;Map。

    Java集合类:List,Set,Queue,Map。

泛型

    如果一个类没有显式的声明继承哪个类,那么自动继承Object类。ArrayList保存的是Object,可以将例如Apple对象放进容器,在编译器还是运行都不会出现问题。get()方法取出的只是Object的引用,必须转型为Apple。应用预定义的泛型例如:ArrayList<Apple>,尖括号中是类型参数(可以有多个),制定了容器实例可以保存的类型。通过使用泛型可以再编译器防止放入错误类型的对象。如果你把别的对象放进去,会出现编译错误,而不是运行时错误。

类型

1,Collection。独立元素的序列,这些元素服从一条或多条规则。List按照插入顺序保存,Set不能有重复元素,Queue按照队列规则确定顺序。

2,Map(也被称关联数组)。一组成对的“键值对”对象。

注意:Arrays.asList方法底层是数组,因此不能修改size,add或delete都会在运行时报错。

List

两种类型:

ArrayList:随机访问O(1),插入删除慢O(N)

LinkedList:插入删除O(1),随机访问比较慢。

迭代器

    也是一种设计模式,也是一个对象,工作:遍历并选择序列中的对象,而客户端程序员不必关系序列底层的结构。通常被称为轻量级对象。Iterator只能单向移动。移除之前需要先调用next方法。Iterator能够将遍历序列的操作与序列底层的结构分离。

    ListIterator:更加强大的Iterator的子类型,只能用于对List的访问。可以双向移动。

先进后出的容器。也被称为叠加栈。LinkedList可以实现栈的所有功能。

Set

    最常被使用测试是否存在。Set具有与Collection完全一样的接口,没有额外的功能,实际Set就是Collection只是行为不同。HashSet使用了散列,所以顺序是没有规律的。TreeSet是存储在红黑树中。

Map

将对象映射到其他对象。Map可以返回他的键的Set,keySet()方法产生所有的键组成的Set。

Queue

先进先出的容器。在并发中特别重要。可以安全的将一个对象从一个任务传输到另一个任务。LinkedList提供了方法支持队列行为,实现了Queue接口,LinkedList是Queue的一种实现,可以向上转型。

    offer():在允许的情况下,将一个元素插入到队尾或者返回false。peek()和element()再不移除的情况下返回队头。peek再队列为空返回null,element抛出异常。poll()和remove()将移除并返回队头,poll再队列为空返回null,remove抛出异常。

PriorityQueue

    优先级队列声明下一个元素是最需要的元素(具有最高的优先级)。先进先出声明的是下一个元素是等待时间最长的元素。重复是允许的,最小的值又有最高的优先级,优先级可以通过提供Comparator对象来改变排序。

Collection,Iterator

Collection描述了所有序列容器的共性的根接口,表示了其他若干个接口的公共性而出现的接口。

    Foreach语法主要永固数组,打死你hi也可以应用于Collection对象。创建了任何实现Iterator得类都可以用于foreach。大量的类都是Iterable类型主要包含所有的Collection类但是不包含Map。

    如果现有一个Iterable类,想要添加一种或多种在foreach使用这个类的方法,那么需要使用适配器设计模式。

总结:

    数组将数字和对象联系起来。他保存的类型是明确的对象,容量不可变。

    List建立数字索引和对象的管理,数组和List都是排好序的容器,List可以自动扩容。

    

相关文章

  • JavaSE梳理十:持有对象

    Java有多种方式保存对象,确切的说是对象的引用。譬如数组是保存一组对象的最有效的方式,但是数组有固定的尺寸,不适...

  • 黑马程序员面试宝典(Java)Beta6.0免费下载

    场景 JavaSE基础 面向对象特征以及理解 访问权限修饰符区别 理解clone对象 JavaSE语法 java有...

  • 持有对象

    11 . java容器就是用来保存对象 除了数组外 还有集合分为:Collection,Map 两大类Collec...

  • iOS-@property-所有权修饰符

    自己生成的对象,自己所持有; 非自己生成的对象,自己也能持有; 自己持有的对象不再需要时释放; 非自己持有的对象无...

  • 内存管理的思考方式

    自己生成的对象,自己持有 非自己生成的对象,自己也能持有 不再需要自己持有的对象时释放 非自己持有的对象无法释放 ...

  • 内存管理的思考方式

    自己生成的对象, 自己所持有 非自己生成的对象, 自己也能持有 不再需要自己持有的对象时释放 非自己持有的对象无法...

  • Java编程思想(十) 持有对象

    通常,程序总是根据运行时才知道的某些条件取创建新对象。在此之前,不会知道所需对象的数量,甚至不知道确切的类型。Ja...

  • ARC[转]

    自己生成的对象,自己持有非自己生成的对象,自己也能持有不再需要自己持有对象时释放无法释放非自己持有的对象 auto...

  • JavaSE梳理十一:异常

    异常基本概念:用名字代表发生的问题,并且异常的名称容易理解。 异常处理是Java中唯一正式的错误报告机制。 ...

  • JavaSE梳理七:多态

    1,多态 在面向对象设计中,多态是继数据抽象和继承之间的第三种基本特征。多态作用消除类型之间的耦合关系。多态方法调...

网友评论

      本文标题:JavaSE梳理十:持有对象

      本文链接:https://www.haomeiwen.com/subject/kniwictx.html