资源描述
Day17 总结
1、LinkedList:
特有方法:
1、增加:addFirst()
addLast()
JDk1.6 之后出现了替代方法
Boolean offerFirst() Boolean offerLast()
实现代码:
Public static void main(String[] args){
LinkedLis link=new LinkedList();
Link.addFirst("abc1"); Link.addFirst("abc2"); Link.addFirst("abc3"); Link.addFirst("abc4");
如有你有帮助,请购买下载,谢谢!
While(!link.isEmpty()){//此方法可以按照顺序取出元素,但是被删除,可以去模拟
一些简单的数据结构
Sop(link.removeLast());//abc1、abc2、abc3、abc4
}
}
重点:模拟堆栈、队列这两种常见的数据结构;
实现代码:队列:先进先出
Public static void main(String[] args){
DuiLie d=new DuiLie();
d.myAdd("abc1"); d.myAdd("abc2"); d.myAdd("abc3");
While(!d.isNull()){//判断是否有元素
Sop(d.myGet());
}
}
Class DuiLie
{
Private LinkedList link;
DuiLie(){
Link=new LinkedList();
}
提供添加元素的方法
Public void myAdd(Object obj)
{
link.addFirst(obj);//这里修改为 link.addLast()就是堆栈
}
提供获取元素的方法
Public Object myGet(){
- 1 -页
如有你有帮助,请购买下载,谢谢!
Return link.removeLast() ;
}
判断集合中是否有内容
Public boolean isNull(){
Return link.isEmpty();
}
}
2、获 取 : Object getFirst() 获 取 对 象 , 不 删 除 , 如 果 集 合 中 没 有 元 素 会 抛 出
NoSuchElementException;
Object getLast();
JDK1.6 后
Object peekFirst() Object peeklast() 3、获取对象:
Object removeFirst()获取到元素,但是删除了。
Object removeLast();
Object pollFirst() Object pollLasr()
2、Set 集合:无序、不重复、该接口中的方法和 Collection 接口中的方法一致。
|--HashSet:低层哈希表数据结构,不同步的,它保证元素唯一性的方式:
根据元素的两个方法来完成的,一个是 hashCode、一个 equals。只有当 hashCode 方法
算出的哈希值相同时,会再次判断两个元素的 equals 方法是否为 ture;
如果是 true 说明两个元素相同,不存储,所以往 hashSet 集合中存储自定义对象时,要 覆盖 hashCode、equals 方法,通过自定义独享具备的特有数据来定义 hashCode、equals 的具
体实现。
哈希结构表分析:
Hash 表和数组表的比较,哈希表数据结构是按照元素的特征通过指定的功能算出该元
素的位置,这种方式查找时候比较快,不 用去遍历整个数组,直接用要查找的数据进行元
素即可,存入其他的数据类型也可以,比如说字符串,只要定义一个功能算法对其进行运算
即可,
注意:哈希值冲突,比如 31%10 和 21%10 最后的值都是 1,只是往 1 角标中存储就冲
突了,怎么去解决这个问题呢?哈希表有种特殊的方式:再散列方式(就是再把这个数据进
行取模,算出其他的位置) 此之外还有另外一种方式:当算到相同的值时,就在该冲突 ,除
的位置的基础上向下顺延一个位置出来,这时候便不再冲突了,如过还有值冲突就继续向下
顺延,上图结构通过 equals 方法来判断对象是否想用,这个方法只有在哈希值一样的时候
才会用到。
实现代码:
需求:存储自定义对象,比如 Person,同姓名和同年龄视为同一个人,是相同元素。
hashSet hs=new hashSet();
Hs..add(new Person("lisi1",20));
Hs..add(new Person("zhangsan",20)); Hs..add(new Person("wangwu",20));
Hs..add(new Person("sunba",20));
Hs..add(new Person("zhangsan",20));
- 2 -页
取出来
Iterator it=hs.iterator();
While(it.hasNext())
{
Person p=(Person)it.next();
Sop(p.getName()+p.getAge());
}
Class Person()
{
Private String name;
Private int age;
Person(String name,int age)
{
This.name=name;
This.age=age;
}
Public void setName(String name){
This.name=name;
}
Public void getName()
{
Return name;
}
Public void setAge(){
This.age=age;
}
Public int getAge()
{
Return age;
}
Public String toString(){
Return "Person:"+name+"::"+age;
}
定义一个比较方式,按照年龄进行自然排序
Public int compareTo(Object o){
Person p=(Person)o;
Int temp=this.age-p.age;
Return temp==0?;
/**按照姓名进行自然排序
Int temp=
Return temp=-0?this,.age-p.age:temp;
}
*/
}
- 3 -页
如有你有帮助,请购买下载,谢谢!
展开阅读全文