JAVA学习笔记 -- 数据结构
一、数据结构的接口
在Java中全部类的鼻祖是Object类,可是全部有关数据结构处理的鼻祖就是Collection和Iterator接口,也就是集合与遍历。
1、Collection接口
Collection c = new Xx(); // c能够称为Collection接口回调对象。尽管它被声明为Collection类型,可是实例化时实现的是接口的实现类Xx。它的方法也是用来操作实现类的对象。
<span style="white-space:pre"> </span>//以下是Collection接口的一些经常用法
boolean add(Object obj);
boolean addAll(Collection c);
boolean contains(Object o);
boolean containsAll(Collection c);
boolean isEmpty();
int size();
void clear();
2、Iterator接口
<span style="white-space:pre"> </span>Xx xx = new Xx();
Iterator iterator = xx.iterator();
iterator()是Collection接口中的方法。它会返回在xx的元素上进行迭代的迭代器。而且迭代置于集合的第一个元素前面。
//以下是Iterator接口的一些经常用法
boolean hasNext();//推断迭代是否到达了集合末尾
Object next();//返回迭代的下一个元素
void remove();//移除迭代指向的最后一个元素
next()方法能够理解为:迭代往下移一位,返回迭代条过的元素。Xx xx = (Xx)iterator.next() 取出来的元素类型为Object须要转换。
java数据结构库还提供了一个Iterator的子接口——ListIterator,能够实现将元素插入指定位置和逆向遍历等操作。具体查阅API。
二、数据结构的几个重要的类
1、链表(LinkedList)
攻克了数组删除元素开销大的问题,可是查询元素须要从链表头遍历。每一个元素有两个指针,next指向下一个元素,previous指向上一个元素。
LinkedList类实现了Collection接口。
2、数组列表类(ArrayList)
数组列表能够依据程序执行时的需求动态的伸缩。
ArrayList类实现了Collection接口。
3、哈希表(Hashtable)
通过散列码存取。实现高速查询特定元素的数据结构。以键—值的形式存储元素,必须保证键是唯一的,值能够不唯一。
<span style="white-space:pre"> </span>//构造器
Hashtable(int initialCapacity, float loadFactor)
//initialCapacity 表示初始化容量 缺省值为 11
//loadFactor 表示装填因子 缺省值为0.75 //主要方法
Object put(Object key, Object value);
//增加一个元素
//返回此哈希表中指定键的曾经的值。假设不存在该值,则返回 null
Object get(Object key);//返回此哈希表中指定键的值
boolean containsKey(Object key);
boolean containsValue(Object key);
Object remove(Object key);//删除指定键元素。返回指定键映射的值
Collection values();//返回此表所包括元素的集合
4、哈希集(HashSet)
与哈希表类似,仅仅是Hashtable实现的是Set接口,而HashSet实现的是Map接口还有Collection接口。
构造方法的默认初始容量是 16,载入因子是 0.75。
另外非常重要的一点是哈希表是线性同步的。而哈希集是非线性同步的。
5、树集(TreeSet)
有序的数据结构。
a、构造器: TreeSet()
此时。向树集加入字符串对象,由于它已经实现了Comparable接口,compareTo方法是按字典序比較字符串的。所以树集元素按字典序排列,当然也能够定义自己的排序方法:
class Student implements Comparable
{
public int compareTo(Object other)
{
<span style="white-space:pre"> </span>//详细实现
}
}
b、构造器:TreeSet(Comparator c)
此时,能够通过实现Comparator接口中的compare方法,定义自己的比較方法。
class StudentComparator implements Comparator
{
public compare(Object a, Object b)
{
//详细实现
}
}
StudentComparator comp = new StudentComparator();
TreeSet set = new TreeSet(comp);
JAVA学习笔记 -- 数据结构的更多相关文章
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
- java学习笔记11--集合总结
java学习笔记系列: java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Ob ...
- Java学习笔记【一、环境搭建】
今天把java的学习重新拾起来,一方面是因为公司的项目需要用到大数据方面的东西,需要用java做语言 另一方面是原先使用的C#公司也在慢慢替换为java,为了以后路宽一些吧,技多不压身 此次的学习目标 ...
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
- 0035 Java学习笔记-注解
什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...
- Java学习笔记(04)
Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...
- 0032 Java学习笔记-类加载机制-初步
JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...
- 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用
垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...
随机推荐
- 安卓开发37:自定义的HorizontalScrollView类,使其pageScroll的时候焦点不选中
自定义一个HorizontalScrollView类,主要为了让这个HorizontalScrollView不能鼠标点击,不能左右按键,并且没有焦点. public class ImageMoveHo ...
- haml、sass简单的解释
1. Haml 全名为 HTML Abstract Markup Language,主要就是让开发者能够使用缩排的方式撰写 HTML,做到永不忘记关 Tag 的效果. 例如:%h1= "He ...
- java类和对象的基础(笔记)
在Java类的设计中,有时希望一个类在任何时候只能有一个实例.这时可以将该类设计为单例模式(singleton).要将一个类设计为单例模式,需要把类的构造方法的访问修饰符声明为private,然后在类 ...
- [Swust OJ 322]--东6宿舍灵异事件(中缀表达式转化为后缀表达式的简单运用)
题目链接:http://acm.swust.edu.cn/problem/322/ Time limit(ms): 1000 Memory limit(kb): 65535 Descripti ...
- AppCode3 常用 设置 及 快捷键 (持续更新)
以下设置都可以通过 设置中的搜索框 进行关键字搜索 0, 打开Project 设置 Command + ; 1, 打开设置快捷键 Command + , 2, 显示行号 Editor -> Ap ...
- win7 php 配置多个网站
1.在C:\WINDOWS\system32\drivers\etc目录下,打开Hosts 添加A站和B站的DNS映射,如127.0.0.1 local.zhengxin.com127.0.0.1 l ...
- Java-Math
java.lang.Math类提供的方法都是static的,“静态引入 ”使得不必每次在调用类方法时都在方法前写上类名: import static java.lang.Mat ...
- Ajax 实现无刷新分页
Ajax 实现无刷新分页
- 浅析Java中的反射机制原理
反射反射,程序员的快乐! Java中反射机制使用的还是比较广泛的,系统的灵活性.可扩展性大都都是通过反射等方式来加载外部插件,使得系统与插件解耦的同时,增加了功能.但是很多人都只是会用,却是不知道它的 ...
- 分享:json2.js源代码解读笔记
1. 怎样理解"json" 首先应该意识到,json是一种数据转换格式,既然是个"格式",就是个抽象的东西.它不是js对象,也不是字符串,它仅仅是一种格式,一种 ...