- 浏览: 5652 次
最新评论
文章列表
对词频统计的实践
这次的实践是由一道面试题引出:找出长篇文章中出现最多的单词。
最开始想到的方法是用map,每个单词为key值,单词出现的次数为value值,但是这样做法虽然简单,但是效率并不是很高。
之后又通过上网搜索和实践,使用了树形结构来统计每个单词出现的次数。
树的根节点为root,树中每个节点都有属性count会记录对应路径上的字符个数,路径则是从根节点指向其26个子节点的指针(每一条路径代表一个英文字母)。比如文章为“apple,apple,honey”,则第一个字符为a,那通过之前的算法,就在根节点root下创建一个孩子树,且将”根节点“转移到存有字符a的路径上指向的子节点, ...
哈希表浅谈
哈希表通俗来说是将数据以某种规则计算来取到一个关键值key,然后查找时直接通过关键值key直接找到数据,这样平均情况下时间复杂度为O(1)。但是因为规则并不是万能的,所以会使得不同的数据得出的关键值一样,产生冲突。解决冲突的方法有两种,一个方法是为冲突关键字在哈希表中寻找另一个位置,称开放寻址法,一个方法是把在相同位置的所有关键字都存储在一个“挂”在那个位置上的数据结构中,称封闭寻址法。
以我自己做过的例子来说,比较熟悉第二个方法中采用挂链法。具体实现方法是结合数组和链表,相当于创建一个链表数组,之后根据数据情况来设置规则,求出对应的关键值,然后进行存储。如果有两个或多个数 ...
数组队列:
先说说数组的优缺点,优点是存储和访问速度很快,但缺点是数组每次只能存储固定类型的数据,且长度固定。而数组队列所实现的原理是可以存储不同类型的数据,并且长度是可变的,这样就可以弥补数组的缺点。
数组队列的具体实现:
首先是定义类,该类对数组大小的改变进行封装的类。定义属性,方法。
代码实现:
创建类,声明数组,定义属性,写构造方法。
public class ArrayList<E>{
//声明一个数组
private Object array[];
private int size=0;
//构造方法
public ArrayList(){
a ...
链表与数组的区别
数组队列的实现原理是:创建一个数组时,都会开辟新的内存空间,让数组名存储这块
内存的首地址;
链表的实现原理是:借助于对象名中存储的是地址。
链表:存储空间不是连 ...
数组
知识点:
数组的定义: 一维数组 数据类型 数组名[] =new 数组名[]
二维数组也是如此
数组的长度: 一维 : 数组名.length
二维: 数组名.length,得出行数
数组名[].length 其中方括号中要写上是哪一行的,这样得出列的数
数组的赋值
可以把值一一赋上,也可以用for循环语句来定义数值,还可借助random来定义随机数值。
练习:
实现2048,将数据存储到数组中
这里是要声明两个不同类型的数组
//声明一个Image类型的数组
Image a[]=new Image [2];
//声明一个二维数组,用来存储Image类型的下标
in ...
接口和事件
定义接口的关键字:interface,且接口可以继承接口,所用的关键字还是extends
接口可以规定一个类的基本形式:方法名,参数列表及返回类型,但不能写方法主体。
接口中的数据成员默认为static静态的,和final终结的(不可更改的)。
所以说接口只提供形式,而无实施的细节。
接口中的所有方法都是抽象的,关键字为abstract
接口的实现:
关键字implements
且实现接口必须实现接口中的所有抽象方法。
一个类可实现多个接口,以此来实现多继承。
事件
事件源:所有的图形界面控件(容器,元素)
你的动作发生在哪一个控件上,那么该控件就是事件源对象。
事件监听器的方法 ...
类的继承
牢记的知识点:
子类继承父类关键字extends,且Java只支持单继承,要想多继承的话要靠接口实现。
子类继承的是父类的所有属性和方法,但是子类不能直接访问父类中的继承的私有属性和方法,可以使用的是public和protected方法。
若是子类对从父类继承来的属性重新定义,则从父类那继承的属性被隐藏,方法覆盖也是如此。
若想要访问隐藏的父类域,两个方法,1是调用从父类继承的方法。2使用super.域名。
方法重写
1.返回值类型 方法名 参数 不变
2.访问修饰符 可以由小写大(私有<没法重写> 默认 保护 共有)
...