随笔分类 -  Java-thinkinjava

摘要:散列的价值在于速度。我们使用数组来保存键的信息,这个信息并不是键本身,而是通过键对象生成一个数字(散列码),作为数组下标。由于数组的容量是固定的,而散列容器的大小是可变的,所以不同的键可以产生相同的数组下标(散列码)。也就是说,可能会有冲突(当然也有特例,比如EnumMap和EnumSet)。所以, 阅读全文
posted @ 2018-03-12 17:24 Storm_L 阅读(1320) 评论(0) 推荐(0)
摘要:映射表的基本思想是维护键-值对的关联,通过键来寻找值。下面是标准Java类库中几种Map的实现: (1) HashMap:Map基于散列表的实现,插入和查询键值对的开销是固定的。可以通过构造器设置容量和负载因子,以调整容器性能。它是默认选择。 (2) LinkedHashMap:类似于HashMap 阅读全文
posted @ 2018-02-09 10:41 Storm_L 阅读(296) 评论(0) 推荐(0)
摘要:Collection是List、Set、Queue的共同接口。Collection主要方法有: int size():返回当前集合中元素的数量 boolean add(E e):添加对象到集合 boolean remove(Object o):删除指定的对象 boolean contains(Obj 阅读全文
posted @ 2018-02-09 10:39 Storm_L 阅读(321) 评论(0) 推荐(0)
摘要:执行各种添加和移除的方法在Collection中都是可选操作的,这意味着实现类并不需要为这些方法提供实现。当我们调用这些方法时,将不会执行有意义的行为,而是通常抛出UnsupportedOperationException。 下面例子我们可以看出Collection的各种实现类中: (1) java 阅读全文
posted @ 2018-02-09 10:14 Storm_L 阅读(2842) 评论(0) 推荐(0)
摘要:每个java.util容器都有其自己的Abstract类,它们提供了该容器接口的部分实现。下面是一个定制自己的Map的例子(List set就省略了): 定制自己的Map实现AbstractMap-->Map,需要实现[Set<Map.Entry<K,V>> entrySet()]方法 实现[Set 阅读全文
posted @ 2018-02-09 10:06 Storm_L 阅读(558) 评论(0) 推荐(0)
摘要:Collection生成器CollectionData CollectionData体现了适配器模式的设计思想,它能把实现Generator接口的类的对象(包括上一章数组中的各种RandomGenerator)都复制到自身当中。 Map生成器MapData 我们可以使用同样的方式生成Map,我们可以 阅读全文
posted @ 2018-02-08 18:29 Storm_L 阅读(1718) 评论(0) 推荐(0)
摘要:与Arrays一样,Collections类中也有一些实用的static方法。 (1) 排序操作 reverse(List list):反转指定List集合中元素的顺序 shuffle(List list):对List中的元素进行随机排序(洗牌) sort(List list):对List里的元素根 阅读全文
posted @ 2018-02-08 18:13 Storm_L 阅读(407) 评论(0) 推荐(0)
摘要:下面是一个Java集合的简化图,我们可以看出,集合分Collection和Map两大部分: 接下来分别以下面几个章节介绍Java集合: Java集合(1):Collections工具类中的static方法 Java集合(2):两个生成器的例子:Collection生成器CollectionData及 阅读全文
posted @ 2018-02-08 16:47 Storm_L 阅读(139) 评论(0) 推荐(0)
摘要:Java标准类库的System.arraycopy()方法,及在java.utils.Arrays类中一套用于数组的static方法,都是操纵数组实用功能。下面分别介绍。 (1) 数组的复制 (2) 数组的比较 (3) 数组的排序和查找 (1) 数组的复制 System.arraycopy(源数组, 阅读全文
posted @ 2018-02-01 22:58 Storm_L 阅读(493) 评论(0) 推荐(0)
摘要:有时我们需要使用数组批量创建测试数据,接下来通过以下4点来举例。 (1) 使用Arrays.fill()填充数据 (2) 使用Random类中JDK1.8提供的新方法用来生成随机数 (3) 一个随机数生成器的实例 (4) 根据(3)中的随机数生成器创建包装类型的数组及通过转换器转换成基本类型的数组 阅读全文
posted @ 2018-02-01 22:52 Storm_L 阅读(1036) 评论(0) 推荐(0)
摘要:通常,数组与泛型不能很好的结合,你不能实例化具有参数化类型的数组。擦除会移除参数类型信息,而数组必须知道它们所持有的确切类型。但是我们可以参数化数组本身。 阅读全文
posted @ 2018-02-01 22:49 Storm_L 阅读(184) 评论(0) 推荐(0)
摘要:我们对数组的基本看法是,你可以创建它们,通过使用整型索引值访问它们的元素,并且他们的尺寸不能改变。 但是有时候我们需要评估,到底是使用数组还是更加灵活的工具。数组是一个简单的线性序列,这使得元素访问非常快速。但是为这种速度所付出的代价是数组大小被固定,并且在其生命周期中不可改变。 无论使用哪种类型的 阅读全文
posted @ 2018-02-01 22:40 Storm_L 阅读(391) 评论(0) 推荐(0)
摘要:例1-闭包(Closure) 闭包是一个可调用的对象(通过Callback),它记录了一些信息,这些信息来自于创建它的作用域 例2-复杂情况下的调用顺序 阅读全文
posted @ 2018-01-19 18:20 Storm_L 阅读(167) 评论(0) 推荐(0)
摘要:使用static修饰的内部类我们称之为静态内部类,不过我们更喜欢称之为嵌套内部类。静态内部类与非静态内部类之间存在一个最大的区别,我们知道非静态内部类在编译完成之后会隐含地保存着一个引用,该引用是指向创建它的外围内,但是静态内部类却没有。没有这个引用就意味着: 1、 它的创建是不需要依赖于外围类的。 阅读全文
posted @ 2018-01-19 17:41 Storm_L 阅读(465) 评论(0) 推荐(0)
摘要:有这样一种内部类,它是嵌套在方法和作用域内的,对于这个类的使用主要是应用与解决比较复杂的问题,想创建一个类来辅助我们的解决方案,到那时又不希望这个类是公共可用的,所以就产生了局部内部类,局部内部类和成员内部类一样被编译,只是它的作用域发生了改变,它只能在该方法和属性中被使用,出了该方法和属性就会失效 阅读全文
posted @ 2018-01-19 17:10 Storm_L 阅读(262) 评论(0) 推荐(0)
摘要:在成员内部类中要注意两点 第一:成员内部类中不能存在任何static的变量和方法; 第二:成员内部类是依附于外围类的,所以只有先创建了外围类才能够创建内部类。 接下来是两个例子(关键字:.this .new 内部类隐藏) [.this] 用于内部类生成[对当前创建该内部类的外部类对象]的引用 [.n 阅读全文
posted @ 2018-01-19 16:03 Storm_L 阅读(348) 评论(0) 推荐(0)
摘要:> 将一个类的定义放在另一个类的定义内部,这就是内部类。 > 使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。 > 在我们程序设计中有时候会存在一些使用接口很难解决的问题,这个时候我们可以利用内部类提供的、 阅读全文
posted @ 2018-01-19 15:47 Storm_L 阅读(211) 评论(0) 推荐(0)
摘要:泛型的目标之一就是能够编写尽可能广泛应用的代码。 为了实现这一点,我们需要各种途径来放松对我们的代码将要作用的类型所做的限制,同时不丢失静态类型检查的好处。即写出更加泛化的代码。 Java泛型看起来是向这个方向迈进了一步。但是还是有一定的限制: (1)当你在编写或使用只是持有对象<T>的泛型时,这些 阅读全文
posted @ 2018-01-06 22:47 Storm_L 阅读(335) 评论(0) 推荐(0)
摘要:由于擦除的原因,将泛型运用于异常是非常受限的。catch语句不能捕获泛型类型的异常,因为在编译期和运行期都必须知道异常的确切类型。但是,类型参数可能会在一个方法的throw子句中用到。这使得你可以编写随检查型异常的类型而发生变化的泛型代码。请看下面的例子。 阅读全文
posted @ 2018-01-04 20:32 Storm_L 阅读(594) 评论(0) 推荐(0)
摘要:因为可以向Java SE5之前的代码传递泛型容器,所以旧式代码仍有可能破坏你的容器。Java SE5中有一组便利工具,可以解决这种情况下类型检查的问题。 它们是静态方法checkedCollection(); checkedList(); checkedMap(); checkedSet(); ch 阅读全文
posted @ 2017-12-27 17:12 Storm_L 阅读(1256) 评论(0) 推荐(0)