Java中的集合(十三) 实现Map接口的Hashtable 一.Hashtable简介 和HashMap一样,Hashtable采用“拉链法”实现一个哈希表,它存储的内容是键值对(key-value)映射.Hashtable 的实例有两个参数影响其性能:初始容量 (11)和 加载因子(0.75).容量 是哈希表中桶 的数量,初始容量 就是哈希表创建时的容量.注意,哈希表的状态为 open:在发生“哈希冲突”的情况下,单个桶会存储多个条目,这些条目必须按顺序搜索.加载因子 是对哈希表在其容量自动…
Java中的集合(十一) 实现Map接口的TreeMap 一.TreeMap简介(基于JDK1.8) TreeMap是基于红黑树数据结构,是一个key-value的有序集合,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法.因为红黑树是平衡的二叉搜索树,所以其put.get.remove的时间复杂度都为log(n). (一).TreeMap与Map的关系 (二).数据结构 红黑树操作包括插入.删除.左旋.右旋,这里有个可视化的红…
背景介绍想象这样一个场景:你可能希望为你的法国客户提供指定主题的热点报道.为实现这一功能,你需要向 谷歌或者Twitter的API请求所有语言中针对该主题最热门的评论,可能还需要依据你的内部算法 对它们的相关性进行排序.之后,你可能还需要使用谷歌的翻译服务把它们翻译成法语,甚至 利用谷歌地图服务定位出评论作者的位置信息,最终将所有这些信息聚集起来,呈现在你的网站上. 典型的“混聚”式应用 在这种“混聚”应用式的应用中,我们的应用可能会有以下两种需求: 由于我们调用的许多都是外部提供的接口,极有可…
与数组相比:1.数组的长度固定,而集合的长度可变2.数组只能通过下表访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象 java集合框架:collection(list序列,queue队列,set集)和map(映射存储数据),红色为常用 Collection接口: list接口:…
interface A{ public abstract void show(); } interface B{ public abstract int show(); } public class Test implements A, B{ public void show(){ System.out.println("A show!"); } /* 只写 void show()出现的问题: Test不是抽象的, 并且未覆盖B中的抽象方法show(); */ public int s…
1.序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保存Object States,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化. 2.什么情况下需要序列化 a)当你想把的内存中的对象保存到一个文件中或者数据库中时候: b)当你想用套接字在网络上传送对象的时候: c)当你想通过RMI传输对象的时候: 3.当对一个对象实现序列化时,究竟发生了什么? 在没有序列化前,每个保存在堆(Hea…
关于接口 接口描述了实现了它的类拥有什么功能.因为Java是强类型的,所以有些操作必须用接口去约束和标记.接口作为类的能力的证明,它表明了实现了接口的类能做什么. 类似与class,interface也是java中的一种引用类型. 接口中的成员 接口中的所有的成员,缺省情况下都是public的,也必须是public,无论是方法,还是字段.因为接口就是规定了API,如果实现的类不公开接口中的API,怎么能叫API呢? 一般情况下,接口中可以 定义方法 和 字段. 接口中的字段,必须(默认)为 pu…
一.抽象类 1.抽象类 包含一个抽象方法的类就是抽象类 2.抽象方法 声明而未被实现的方法,抽象方法必须使用abstract关键词字声明 public abstract class People { //关键词abstract,声明该类为抽象类 public int age; public void Num() { } public abstract Name(); //声明该方法为抽象方法 } 3.抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法 4.抽象类不能被直接实例…
在Java中通过Observable类和Observer接口实现了观察者模式.实现Observer接口的对象是观察者,继承Observable的对象是被观察者. 1. 实现观察者模式 实现观察者模式非常简单, [1]创建被观察者类,它继承自java.util.Observable类: [2]创建观察者类,它实现java.util.Observer接口: [3]对于被观察者类, 添加它的观察者: void addObserver(Observer o) addObserver()方法把观察者对象添…
在Java中如果一个类同时继承接口A与B,并且这两个接口中具有同名方法,会怎么样? 动手做实验: interface A{ void fun(); } interface B{ void fun(); } interface C extends A,B{ } public class Test implements C{ @Override public void fun() { System.out.println("hehe"); } public static void main…