Javaday26

 线性表: 
   1.数组: 
   2.链表: 
          单链表 , 双链表 , 循环链表
   3.栈
   4.队列: 单向队列
                   双向队列

java中有哪些接口代表它们:
  1.LinkedList  List
  2.Vector :
           Stack      
  3.Queue:
      Deque:

StringBuffer: 16   可变类
StringBuilder:
   append().append();  链式编程
   reverse();
   insert(int start , int end);
   delete(int start ,int end);
}
String , StringBuilder ,StringBuffer 的区别:
  1.使用final 修饰 不可以被继承,又被称为不可改变类
      String 初始化方式 =  new 
      放到常量池中,第一存储如果常量池没有 ,
      new String("abc");

介绍一下 重载和 重写 区别:

介绍 final , finally   finalized();
===================================================
泛型: 
  数据类型参数化;
  
  语法结构: 
   List<引用数据类型 >
   
泛型的出现帮助我们在编译期间 就 检测了 数据类型是否 合理
防止了程序在运行期间 出现 类型转换异常,让程序特具有健壮性
   
Set: 
  无序 , 不可重复的集合
  
  hashCode()
  
  HashSet: 重点注意  存储 自定对象时要 重写 hashCode和 equals
        由哈希表(散列表)实现 , 底层就是用 HashMap实现的
     无序的(输入顺序和 输出顺序不一致) ,允许存储null 值
     不可重复
   
   常用构造器:
     HashSet();  默认长度为16
     HashSet(int initialCapacity);          
  
  常用方法:
     add();
     clear();
     contains(Object obj);
     isEmpty(); 
     iterator() 
     remove(Object o)
     size() 
     
 static class Node implements Map.Entry {
        final int hash; 0x223F  当前这个元素在哈希表中的位置
        final K key; 元素本身
        V value; new Object(); 对象, 补充位置
        Node next;
HashMap: 
  jdk1.7 和  jdk1.8的区别:
    1.7 对象数组 + 链表形式
    1.8  对象数组 + 链表 + 红黑树    
          Entry[]
         
负载因子 0.75 : 阈 yu 值     代表边界的意思    
           
HashMap:存储原理
   当我们向 HashMap中存储对象时,一定要经历两次操作(计算哈希值 ,equals比较内容)
   1.我们必须通过计算 获取到当前对象的 hash值 ---> 散列值
       如果这个位置上没有内容,我们就直接存储,
        如果这个位置上有值了 ,那么久比较内容,如果内容相等
        就去重,如果不相等就以链表的形式向下存储,如果
        链表的形式长度 > 7 就以红黑树的形式存储
        
在使用HashSet存储对象时: 
 1. 如果 equals 相等 ,hashCode 一定相等吗?
     所以 一定相等
     
     现有的 hashCode 在有equals
 
 2. 如果hashCode值相等, equals一定相等吗?
 
 我们管 这种 hashCode相等的 情况 叫 哈希碰撞 (哈希冲突)    
 什么是哈希冲突? 
---------------------------------------------------   
TreeSet:  有序的set 集合
  
 Comparable: 可以比较的
   和
 Comparator: 自定义比较器 
  
  区别:
  它是让当前 需要排序的对象 具有 比较的能力,
   实现这个接口后 重写 compartTo方法,是jvm 默认的比较规则
   单一 , 会"污染"当前类的结构
   
   Comparator被称为 自定义比较器:
     使用人员可以自行 定义多个 比较器 ,实现比较规则,并重写compare方法
   相比Comparable 更加灵活 ,并且不会"污染" 实现比较功能的类
   
   提供了匿名内部类的方式:
     例如:
   Set set = new TreeSet<>(new Comparator(){
            @Override
              public int compare(Student s1,Student s2){
                   reutrn 0;
              }
   });
   
   
   
   


 

你可能感兴趣的:(java学习)