第11章 持有对象
来源:互联网 发布:windows 10 安装.net 编辑:程序博客网 时间:2024/05/17 08:20
首先想说持有这词用的真好
基础知识
图描述:图中只有四种容器:Map , List , Set 和 Queue . 常用的容器用黑色的粗线框表示。(点线框表示接口,实线框表示普通的(具体的)类。带有空闲箭头的电线表示一个特定的类实现了一个接口,实心箭头表示可以生成箭头所指向类的对象。)
java有多种方式保存对象,更确切的说是对象的引用
- java容器类可以划分为两个不同的概念: Collection: 一个独立的序列 (所有的Collection,都可以用foreach) Map: 一组成对的键值对对象
- 常用的有4类容器:set map list queue
- list必须按照插入的顺序保存元素
- set不能有重复的元素
- queue按照排队的规则来确定对象的产生顺序(通常与插入的顺序相同)
@Suppress warnings('unchecked')
可以压制警告信息- 向上转型也可以像其他类型一样作用于泛型(其实子类可以存放进具有父类约束的容器中):
class GrannySmith extends Apple {}class Gala extends Apple {}class Fuji extends Apple {}class Braeburn extends Apple {}public class GenericsAndUpcasting { public static void main(String[] args) { ArrayList<Apple> apples = new ArrayList<Apple>(); apples.add(new GrannySmith()); apples.add(new Gala()); apples.add(new Fuji()); apples.add(new Braeburn()); for(Apple c : apples) System.out.println(c); }}
- 向容器中添加一组元素:
Collection<Integer> collection = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5));Integer[] moreInts = { 6, 7, 8, 9, 10 };collection.addAll(Arrays.asList(moreInts));
// Runs significantly faster, but you can't construct a Collection this way: Collections.addAll(collection, 11, 12, 13, 14, 15); Collections.addAll(collection, moreInts);
注意:Arrays.asList(*)其底层表示的还是数组,因此不能调整尺寸
List<Integer> list = Arrays.asList(16, 17, 18, 19, 20);list.set(1, 99); // OK -- modify an element// list.add(21); // Runtime error because the // underlying array cannot be resized.
- Collection的打印风格:[rat, cat, dog, dog]
- Map的打印风格:{dog=Spot, cat=Rags, rat=Fuzzy}
- ArrayList和LinkedList都是list类型,它们都可以保存元素的顺序,只是在某些操作上的性能不同
- 注意:对于内置对象,java负责编写了equals方法,但是自己编写的类,却没有 -
set
- set对于每个值都只保存一个对象
- HashSet使用最复杂的技术保存对象,但是能够最快的获取元素,但不能保持顺序。TreeSet按照比较的结果升序保存对象。LinkedHashSet按照添加的顺序保存对象,同时保存了HashSet的查找速度
- set不保存重复的元素
- TreeSet将元素存储在红-黑树的数据结构中,二HashSet使用的是散列函数。LinkedHashList因为查询速度的原因也使用了散列。
map
- map也有HashMap, TreeMap, LinkedHashMap,性质同Set. -
list
- 有两种基本类型:
- ArrayList: 擅长于随机访问,插入和删除操作较慢
- LinkedList:擅长插入和删除,随机访问相对较慢
Queue
阅读全文
0 0
- 第11章 持有对象
- 第11章 持有对象
- 第11章 持有对象
- 第11章 持有对象
- 第11章 持有对象
- 《Thinkinginjava》第11章-持有对象
- 11章 持有对象
- 《Java编程思想》第11章 持有对象
- Thinking in Java 第11章 持有对象(容器)
- 《Java 编程思想》第11章 持有对象 笔记
- 读书笔记 Thinking In Java第11章“持有对象”
- JAVA 编程思想第11章--持有对象
- [学习笔记][Java编程思想]第11章:持有对象
- Java编程思想学习笔记(十) 第11章 持有对象
- 第11章持有对象 _11.1泛型和类型安全的容器
- java编程思想学习_第11章_持有对象
- 11、持有对象
- 11持有对象
- leetcode 15. 3Sum
- 利用java 编写简易贪吃蛇游戏
- ChromeDriver cannot find Chrome binary问题解决
- Java Character
- HTML5 Canvas画布
- 第11章 持有对象
- 欢迎使用CSDN-markdown编辑器
- [题解] POJ 3107 Godfather(树型DP 求树的直径)
- Hive优化总结(1)
- VMware中安装 Windows NanoServer
- 深入理解DIP、IoC、DI以及IoC容器
- Token注解防止表单的重复提交
- HTML5的新增表单属性
- Ubuntu 16.04 anaconda安装opencv及python链接