都是一些基础的,从别人那里听说或者看到的问题。带详解连接(下划线)
在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和LinkedList(双向链表)有什么区别?
阐述ArrayList、Vector、LinkedList的存储性能和特性?
ector与ArrayList一样,也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写Vector,避免多线程同时写而引起的不一致性,但实现同步需要很高的花费,因此,访问它比访问ArrayList慢。
Map:
Map和ConcurrentHashMap的区别?HashMap和Hashtable有什么区别?concurrenthashmap有啥优势?
ConcurrentHashMap锁加在了哪些地方?
ConcurrentHashMap是使用了锁分段技术来保证线程安全的。
锁分段技术:首先将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问。
如果hashMap的key是一个自定义的类,怎么办?上面的重写equals和hashcode
2019-03-19