[JAVA]预面试笔记

都是一些基础的,从别人那里听说或者看到的问题。带详解连接(下划线)

  在object类里面定义了equals方法,默认情况下,判断的是两个对象的地址是否相等,等价于“==”。可重写此方法:public boolean equals(Object obj){}自定义比较内容。  

  hashcode,仅仅在创建散列表的时候才有用,如果两个对象相等,他们的hashcode一定相等,但hashcode相等,对象不一定相等。所以在散列表中,要判断是否相等,要同时重写equals方法和hashcode方法。

  • 集合

  jdk提供的java集合都位于java.util包中,与java数组不同,Java集合不能存放基本数据类型,而只能存放对象。ps:int和Integer的区别

  Java集合主要包括三个类型:set,list,map

 

Set是最简单的集合,集合中的对象不按照特定方式排序且没有重复对象

List按照元素以线性方式存储,允许存放重复对象

Map集合中的每一个元素包含一对键和值对象,没有重复的键对象,值对象可以重复


Set:

  HashSet类根据哈希算法来存取集合中的对象,具有很好的存取查找特性。

  TreeSet采用树结构来存储数据,按大小排序,对同一层的结点从左到右大小递增,下一层的都不上一层的小。默认情况下用compareTo自然排序,可以客户化排序。

public class Point implements Comparable{
    private int x;
    private int y;
    public Point(int x,int y){
             this.x=x;
              this.y=y;
    }

    public int compareTo(Object obj){
                if(obj instanceof Point){
                          Point p=(Point)obj;
                           return (x*1000+y)-(p.x*1000+p.y);
                }else{
                           return -1;
                 }
    }
    
}

客户化排序:接口Comparator;比较comparable和comparator的区别


List:

ArrayList是否会越界?

ArrayList和LinkedList(双向链表)有什么区别?

阐述ArrayList、Vector、LinkedList的存储性能和特性?

ector与ArrayList一样,也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写Vector,避免多线程同时写而引起的不一致性,但实现同步需要很高的花费,因此,访问它比访问ArrayList慢。


Map:

Map和ConcurrentHashMap的区别?HashMap和Hashtable有什么区别?concurrenthashmap有啥优势?

ConcurrentHashMap锁加在了哪些地方?

  ConcurrentHashMap是使用了锁分段技术来保证线程安全的。

  锁分段技术:首先将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问。

如果hashMap的key是一个自定义的类,怎么办?上面的重写equals和hashcode

什么是TreeMap?


2019-03-19

原创供学习参考使用,转载请注明出处http://www.cnblogs.com/cuphoria/ @jm_epiphany
原文地址:https://www.cnblogs.com/cuphoria/p/10559098.html