摘要:
背景:没有泛型的话,集合对元素类型就不会限制,容易发生转换异常。 举例:下面举例不检查类型可能发生的异常, 如何在编译时进行类型检查呢? 问题:手动实现List集合编译时类型检查需要我们定义大量的List子类,这效率不太高。 对比可看出引入泛型的好处。 定义:泛型就是允许在定义类和接口时指定类型形参 阅读全文
2018年7月13日
2018年7月11日
摘要:
Java提供了一个操作Set List Map 的工具类Collections . 里面有大量方法对集合元素进行排序,查询修改等操作。 还能把集合设为不可变。 对集合对象实现线程同步控制。同步控制 在hashtable那提过,虽然他是线程安全的,但是他性能比较差,所以Collections.sync 阅读全文
摘要:
注意:Map与Set集合的关系非常密切。java源码就是先实现了HashMap,TreeMap,再包装了一个value都为null的Map集合实现Set集合类。 因此:TreeSet可以和TreeMap对比来看 TreeSet存储key-value对时,根据key对节点进行排序。;类似得,也有两种方 阅读全文
摘要:
JAVA8除了给Map集合新增了方法remove(Object key,Object value)默认方法外 还增加了以下方法 Object replace(Object key,Object value),与put方法不同,他如果发现原来key不存在也不会增加新的key-value boolean 阅读全文
2018年7月5日
摘要:
ArrayList和Vetor是List两个典型的实现类。 他们都是基于数组的实现类。内部都封装了一个动态的,允许再分配的Object[]数组。 他两方法基本都相同。除了,ArrayList是线程不安全的类,多个线程访问ArrayList,超过一个修改ArrayList,则必须手动保证ArrayLi 阅读全文
2018年7月4日
摘要:
HashSet 和TreeSet是Set的典型实现。HashSet 比TreeSet性能好,TreeSet需要额外通过红黑树算法维护集合 的顺序。除了需要维护集合的顺序外,其他的都优先用HashSet 。 LinkedHashSet 比HashSet 慢,但是因为有链表,所以遍历他就更快。 Enum 阅读全文
2018年7月3日
摘要:
反射 为什么需要反射? 背景知识: Java引用变量有两种类型,一种编译时类型,一种运行时类型。编译时类型由声明变量使用的类型决定。运行时类型由实际赋给他的变量决定。两个类型不一致的话,就可能出现“多态”的情况。 以上代码说明: 1.对象的方法具有多态性。最后一行注释的代码不能通过编译,虽然b的引用 阅读全文
摘要:
基础知识: 什么是集合? 集合是一个容器。把多个对象放入容器中。有一个水杯,你可以选择把水不断往里装,也可以选择装牛奶。但是不能两种不同的东西混合装一个杯子。集合这个容器里装的一定是同一类型的东西。(引用类型,不能是基本类型) 看到这个介绍,我们可能想到数组,数组要求的也是里面必须存放的是一种数据类 阅读全文
摘要:
Set集合 就像把对象随意扔进罐子里,无法记住元素的添加顺序。Set某种程度就是Collection,方法没有不同,只是行为稍微不同,(不允许重复元素),如果一定要往里加两个相同元素,添加失败add()返回false; 上面的Set的一些共同点,Hashset,TreeSet,EunmSet三个实现 阅读全文