hash:散列
------------------
Hashset集合内部是通过HashMap进行实现的。使用的是HashMap中key部分。
对象在添加进集合中时,首选会对hashcode进行处理(hashcode右移16位和
自身做异或运算)得到一个经过处理的hash值,然后该值和集合的容量进行
&运算,得到介于0和集合容量值之间一个数字。该数字表示着数组的下标。
也就是该元素应该存放在哪个元素中。
Map与Collection
--------------
Map与Collection在集合框架中属并列存在
Map存储的是键值(KV)(Key-Vaule)对
Map存储元素使用put方法,Collection使用add方法
Map集合没有直接取出元素的方法,而是先转成Set集合,在通过迭代获取元素
Map集合中键要保证唯一性
Map集合常用类
---------------
Hashtable:线程安全,速度慢,不允许存放null键,null值,已被HashMap替代。
HashMap:线程不安全,速度快,允许存放null键,null值。
TreeMap:对键进行排序,排序原理与TreeSet相同。
增强FOR循环
--------------
Collection在JDK1.5后出现的父接口Iterable就是提供了这个for语句。
格式:
for(数据类型 变量名 : 数组或Collection集合) { 执行语句; }
简化了对数组,集合的遍历。
可变长参数函数(只能有一个变长参数而且必须是最后一个)
返回值类型 函数名(参数类型… 形式参数) { 执行语句; }
泛型
---------------
提高了程序的安全性
将运行期遇到的问题转移到了编译期
省去了类型强转的麻烦
泛型类的出现优化了程序设计
List<Srting> list1 = new ArrayList<String>(); //<E>
类型通配符上限通过形如Box<? extends Number>形式定义,相对应的,类型通配符下限为 Box<? super Number>形式,其含义与类型通配符上限正好相反
IO流
----------------------
java.io.
IO流用来处理设备之间的数据传输
Java对数据的操作是通过流的方式
Java用于操作流的对象都在IO包中
流按操作数据分为两种:字节流与字符流。
流按流向分为:输入流,输出流。
IO流常用基类
-----------------------
字节流的抽象基类:
InputStream ,OutputStream。
字符流的抽象基类:
Reader , Writer。
注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
如:InputStream的子类FileInputStream。
如:Reader的子类FileReader。
TIPS2:
进行IO异常处理
在finally中对流进行关闭 Close()
字符流+字节流
---------------
FilterWriter fw = new FileWriter();
FileReader : 不支持Rest,不支持mark,skip跳过指定字符数,>=0.
-------------------
输入流 + 输出流
------------------
本文出自 “yehomlab” 博客,转载请与作者联系!
原文地址:http://yehom.blog.51cto.com/5159116/1784295