java学习笔记2

collection  容器 接口
set  不能重复  无序
list  可重复  有序
 
hashMap - >map  通过对象找对象

迭代器  遍历容器

link
ArraryList 线程不安全  效率高 底层实现是数组  查询,块 加入 删除慢
LinkList  线程不安全  效率高 底层实现是链表   查询慢  加入 删除块
Vector  线程安全  效率低
System.Arrarycopy();
数组复制
Map  健(key)-值(value)段 健不重复
Map.put(key,value)  一对一对放 类似相关关系
hashMap()   线程不安全  效率高
hashTable() 线程安全    效率高

set  底层是Map
默认hashcode 是根据地址计算
hasdset 底层是hasdmap  并将hashset的对象当成hashmap的键

remove  根据
set  散列
容器加上泛型后  只能加一种类型对象
List<Student> list = new ArraryList<Student>();
javabean 实体类   属性和set和get方法
map  类似

Iterator  接口(迭代器)  容器变量
先获得迭代器  然后循环

Student<T1,T2> 
Student<String,Integer>  不能是静态  基本数据类型
T type
k v key value
泛型接口 接口中   泛型字母自能使用在方法中  不能在常量中
泛型方法   只能获取  不能修改信息
  public static <T> void test(T a) {
      System.out.println();
 }
泛型  自动检查多态类型
父类是泛型类
public abstract class Father<T> {
}
子类 (1)类  class child1 extends Father<String> {
}
      (2)泛型类 使用时确定 个数与父类类型字母个数相同
              class child2<T> extends Father(T) {
}
       (3)子类为泛型类,父类不指定类型  泛型的擦出
              class child3<T1> extends Father{
}
        (4)子类擦除  父类擦除
             class child4  extends  Father {
}
在父类随父类 在子类随子类
重写 随父类
范式无多态
类上 不能用?
extends  <= 上限
super  >= 下限
泛型嵌套
没有泛型数组
可以申明 可以使用?
jdk1.7 可以  A<String> x = new A<>();
泛型使用  不指定类型  擦除  默认Object 
但自己自定Object  不是擦除 而是使用时与Object比较
增强for 必须实现迭代器  及增强for即迭代器
Java.lang.Iterable接口

排序  系统内置的实现了Comparable接口  并重写了比较
CompareTo() 方法
我们自定义排序  需要实现Comparator 接口 的 Compare方法

TreeSet
使用时 不能修改数据   否则可能打乱排序
因为是放入时排序
使用final 修饰

hashMap  hashTable 区别
hashtable 线程安全  同步 效率相对低下
hashmap    线程安全  不同步  效率高
父类 hashtable  Dictionry  hashMap AbstractMap
null hashtable 键与值不能为null
     hashMap   健最多一个null 值可以多个Null

Properties  
读写资源配置文件
值与键 只能为字符串

后缀为 properties
字节流
字符流
.xml

WeakhashMap  键为弱引用 gc立即回收
IdentyMap   键比较地址  注意常量池对象
EnumMap      枚举Map  键为枚举值

Collections 管理同步  即是容器变为线程安全的容器
SynchronizationXXX();
Collections,synchronizationList();
Collection只读设置
empty
https://code.google.com/p/guava-libraries/

ByteArrayOutputStream  需要将节点流中的数据保存到byteArrayOutputStream中   再统一
bos,toByteArray() 方法 输出到字节数组里

引用类型  数据+类型
序列化  输入流  ObjectInputStream
反序列化  输出流 ObjectOutputStream

序列化 和 反序列化 顺序一致
不是所有的对象都可以序列化 必须实现 java.io.Serializable 接口

不是所有属性都需要系列化 不想某属性序列化
private transient String name;

public static void close(Closeanle ... io)
可变参数(个数) 只能放到最后

1.7新特性  try --- with --- resorce
自动关闭   编译后一样

printstream  = system.out;
重定向

RandAccessFile 随机读取 可用于文件分割
RandAccessFile(src."r")   只读
sequenceInputStream 合并两个流
使用Vector 存储枚举流

猜你喜欢

转载自blog.csdn.net/acm160920007/article/details/79281025