容器和泛型
来源:互联网 发布:mac怎么下载word软件 编辑:程序博客网 时间:2024/05/29 11:14
在Java编程中,对象是个永恒的话题,你有对象没,没有?那就new一个吧,哈哈~ 好了废话不多,开始正题,就如昨天所说,为啥开始写笔记,其中之一就是thinking in Java 第十一章,有关泛型和容器的问题真的很重要.在说泛型和容器之前我们先说说对象,我们平时编程中接触最多的就是对象了,谁让Java就是面向对象的编程呢,但是你会发现,我们不可能随时随地的就是用一个对象或者两个,三个?更多的时候我们使用很多对象.那么此时该怎么做呢,我想你也应该想到把这些对象装到一个容器里,要多少装多少,然后直接取用,那多方便.
但是你会发现,虽然容器在装对象的时候没有任何限制,但是取出来的时候会出现一个问题,这是因为作为一个容器他继承object类,而Java中所有对象都是最终继承object类的,因此在存入的时候没有任何问题,但是,取出来的时候它也会默认是object类的,这个时候就需要我们对应去转型,而此时就会出现麻烦,你并不知道取出来的是什么类型,这个时候泛型在这里就起作用了,它在申明容器时就固定了容器的类型,你只能存这个类型的类,其他类存就会报错.同样取出来的时候容器识别泛型的类型并自动帮你转型.泛型基本申明方式:List<Object> list = new ArrayList<Object>(); object就是你要申明的对象类型!
有关容器我们需要关注Collection和Map,Collection一个独立的元素序列,并且这些元素服从一个或者多个规则,Map则是一组成对的键值对对象,允许你使用键查找值.
在Collection中又有list:按照插入顺序保存元素
set:不能有重复的元素
queue:按照排队的规则来确定对象产生的顺序(即从一端插入对象,从另一端移除对象)
同时,list中又有ArrayList:按照插入顺序保存元素,也具有更快的查找元素,较慢的插入和移除元素
LinkedList:按照断开链接放入元素,也具有更快的插入元素,较慢的查找元素
set中又有HashSet:使用相当复杂的方式存储元素(哈希表形式),同样它是最快获取元素方式.
TreeSet:按照比较结果升序保存对象
LinkedHashSet:按照被添加顺序保存对象
在Map中又有HashMap:它没有按照明显的顺序来保存元素(即无序的,它通过一种非常快的算法控制顺序),但是它却又最快的查找技术.
TreeMap:按照比较结果的顺序保存键.
LinkedHashMap:按照插入顺序保存键,同时保留HashMap的查找速度
有关容器的遍历方式我就不赘述了,网上一大堆,这里我只想说迭代器,因为自己还不是完全理解了只是会用,而且它很强大,先说它几个特性,明天继续说他的更重要特性,首先它拥有几个方法: iterator(),他要求容器返回一个Iterator;
next():获取序列的下一个元素;
hasNext():检查序列中是否还有元素;
remove():将迭代器新近返回元素删除,注意这里是新近返回元素,它意味着,首先是返回在移除,即:Iterator.next();然后才允许Iterator.remove();如下两种方式:
List<Object> list = new ArrayList<Object>();
Iterator<Object> it = list.iterator();
while(it.hasNext()){
Object o = it.next();
o.remove();
}
for(Object o : list){
System.out.println(o);
}
好的,今天就到这里,给自己加油!明天继续!
- 容器和泛型
- Java 容器和泛型 认识容器
- 泛型和容器二
- 泛型和容器三
- C++ 学习笔记 2.1 : 容器和算法(顺序容器、关联容器、泛型算法)
- 容器和泛型的简单介绍
- 黑马程序员--Java 泛型和容器
- 泛型和容器(1)——Collection接口和容器的打印
- STL容器之泛型容器
- 黑马程序员_Set集合容器和泛型
- [连载]C#程序设计(14)--- 泛型和容器
- 【java】泛型和类型安全的容器ArrayList
- IO、容器、泛型算法和动态内存
- 容器 泛型算法
- 容器泛型 (为容器和迭代器添加泛型 取消了强转 使代码安全)
- Spring容器和struts容器
- web容器和servlet容器
- web容器和servlet容器
- 交叉验证与学习曲线
- Eclipse Mars 界面工具栏调整
- Six Degrees
- [51NOD](1003)阶乘后面0的数量 ---数学
- 推荐一个JAR包下载地址
- 容器和泛型
- 洛谷 [P1387]最大正方形
- GPIO口几种模式
- 创建继承于类person的类student
- Eddy's AC难题
- java提高篇之集合大家族
- 自定义组件
- 文件的存取
- android接入微信 sdk时屏幕会黑屏