java常用集合的理解、泛型、反射

set(无序,不可重复,线程不安全,增加删除快,查询慢)

Set是无序的,指的是队列排列结果无法预知,不是按照插入顺序排列。所以,

TreeSet既成自Set,无序,但是结果是按照二叉树排列,HashSet安装哈希表排列。

Set的排序:

自然排序:

1、TreeSet的add会把对象升级为Comparable类型

2、add的时候调用compareTo方法比较

3、安装compareTo方法进行排序存储

比较器比较

1、创建TreeSet的时候接收Compator

2、add的时候调用Compator的compare方法

3、安装compareTo方法进行排序存储

List(有序,可以重复,线程不安全)

线程不安全的解决办法(装饰)

List list=Collections.synchronizedList(newLinkedList(...));

子类有ArrayList,LinkedList,Queue,

ArrayList的底层是可变数组,随着元素增大按照50%扩容(即变成原来的1.5倍),新增删除慢,查询元素快

LinkedList底层是链表,新增删除快,查询元素慢。

HashMap和Hashtable的区别

1、HashMap可以保存null key和null value,但是Hashtable不可以

2、HashMap是线程不安全的,Hashtable是线程安全的。多个线程可以共享一个Hashtable,而没有正确同步的话,多个线程是不能共享HashMap的。

3、正是因为Hashtable是线程安全的,所以在单线程的情况下Hashtable的效率比较低,应该选择HashMap。

HashMap可以通过下面的语句进行同步:

Map m = Collections.synchronizeMap(hashMap);

HashMap和TreeMap的区别

HashMap 的底层是哈希表,非线程安全的,允许null 的key和null的value。key不能重复,value可以重复。

TreeMap的底层是红黑树。非线程安全,不允许null。value可以重复。不能重复,value可以重复。

JDK 1.5后新特性

1、泛型

2、装箱和拆箱

3、可变参数

4、枚举

5、增强for循环

6、静态导入

java中类加载器、反射、动态代理之间的关系

1、类加载器是用来把一个类的.class文件从硬盘中加载到虚拟机上变成对象的类。

Bootstrap classloader、extention classloader、app classloader

2、反射是通过字节码文件对象将字段,方法,构造等成员变量映射成响应的类,获取并操作类的成员变量的技术。

3、动态代理中通过反射调用目标方法,是反射的应用。

你可能感兴趣的:(java常用集合的理解、泛型、反射)