参考资料:

http://www.cnblogs.com/janneystory/p/5758958.html array arraylist list linklist的区别

http://www.cnblogs.com/skywang12345/p/3311275.html iterator enumeration 的区别

http://www.cnblogs.com/langtianya/archive/2013/03/19/2970273.html hashmap hashtable 的区别

由Java工具包提供

  • 链表
  • 枚举
  • 位集合
  • 向量
  • 字典
  • 哈希表
  • 属性

链表LinkedList

构造

LinkedList()

方法

boolean add(Object e)

void add(int index ,Object e) 向指定位置添加一个元素

void addFirst(Object e)

void addLast(Object e)

Object get(int index)

Object getFirst()

Object getLast()

Object set(int index,Object e) 将某位置元素替换为e

void clear()

int size()

boolean contains(Object e)

Object remove(int index)

Iterator iterator() 返回一个迭代器,用于遍历

枚举Enumeration

public enum TestEnum{A,B,C}

方法

  • e.haMoreElements()
  • e.nextElement()

Enumeration与Iterator的区别:

  • 都是接口,Iterator比较新,且多一个删除方法remove()
  • Iterator比Enumeration多一个fail-fast机制,多线程访问时可能会触发
  • Enumeration包含:hasMoreElements/nextElement
  • Iterator包含:hasNext/next/remove

位集合BitSet

实现了一组可以单独设置和清楚的标志

构造

BitSet()

BitSet(int size)

方法

b1.and(b2) 与运算,结果存在b1

b1.or(b2) 或运算,结果存b1

b1.xor(b2) 异或运算,结果存b1

    import java.util.BitSet;

    public class BitSetDemo {

    private static BitSet b1 = new BitSet();
private static BitSet b2 = new BitSet();
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=0;i<15;i++){
if(i%2==0){
b1.set(i);
}
if(i%5!=0){
b2.set(i);
}
}
p(); b2.and(b1);//与过之后,b2就被改变了,变成了交集
p(); b2.or(b1);//用改变后的b2再或b1,
p(); b2.xor(b1);
p();
} private static void p(){
System.out.println("b1: " + b1.toString());
System.out.println("b2: " + b2.toString());
System.out.println();
}
}

向量Vector

构造

Vector()

Vector(int size)

Vector(int size,int incr) 由于Vector的大小可以动态增长,此处param2指定每次增长的空间大小

Vector(Collection c) 用Collection初始化Vector

方法

void add(int index,Object element)

boolean add(Object element) 加在末尾

void addElement(Object element) 与add返回不同,功能一致

int size() 返回当前实际存储了值的大小

int capacity() 返回当前总容量

void clear() 清除所有元素

boolean contains(Object element) 是否包含

Enumeration elements() 返回包含所有元素的枚举,用于遍历(hasMoreElements/nextElement)

Object get(int index) 获取指定位置元素

Object firstElement() 获取第一个元素

Object lastElement() 获取最后一个元素

    import java.util.Enumeration;
import java.util.Vector; public class VectorDemo { public static void main(String[] args) {
// TODO Auto-generated method stub
Vector v = new Vector(3,2);
v.add(1);
v.add(2);
v.add(3);
System.out.println(v.capacity());
v.add(4);
System.out.println(v.capacity());
v.addElement(5);
v.addElement(6);
System.out.println(v.capacity());
Enumeration e = v.elements();
while(e.hasMoreElements()){
System.out.print(e.nextElement()+" ");
}
} }

栈Stack

后进先出,Vector的一个子类

构造

Stack()

方法

boolean empty() 测试是否为空

Object peek() 查看栈顶对象,但不移除

Object pop() 返回栈顶对象,并移除

Object push(Object o) 将对象压入栈顶

Object search(Object o) 查找o,返回索引

    import java.util.Stack;

    public class StackDemo {

    public static void main(String[] args) {
// TODO Auto-generated method stub
Stack s = new Stack();
System.out.println(s.empty()); s.push(1);
s.push(2);
System.out.println(s.toString()); s.peek();
System.out.println(s.toString()); System.out.println(s.search(2)); System.out.println(s.indexOf(1)); s.pop();
System.out.println(s.toString());
}
}

字典Dictionary(已过时)

Map接口(类似于Dic,实现类有HashMap、Set、Hashtable、Collection)

HashMap方法

void clear()

boolean containsKey(Object k)

boolean containsValue(Object v)

Object pub(Object k,Object v)

Object get(Object k)

哈希表Hashtable

构造

Hashtable()

Hashtable(int size)

Hashtable(int size,float fillRatio) param2为填充比例 介于0.0-1.0之间

Hashtalbe(Map m) 用m中的元素初始化hashtable

方法

Object put(Object k,Object v)

Object get(Object k)

Enumeration keys()

HashMap和Hashtable 的区别

HashMap:轻量级、非线程安全、允许null作为key、value、有containsKey/containsValue方法

Hashtable:较重、线程安全、不允许null、包含contains方法(比较旧)

Java学习笔记【八、数据结构】的更多相关文章

  1. Java 学习笔记 (八) Java 变量

    head first java page85 实例变量是声明在类内而不是方法中 class Horse{ private double height=15.2; private String bree ...

  2. Java学习笔记八(反射)

    1.介绍 反射为Java程序在执行时提供了动态的能力.利用反射能够在执行时对程序进行动态的控制.本篇博客着重解说一下Java中的反射. 2.Class类的使用 在Java执行过程中,每一个类被载入后都 ...

  3. Java学习笔记八:Java的流程控制语句之循环语句

    Java的流程控制语句之循环语句 一:Java循环语句之while: 生活中,有些时候为了完成任务,需要重复的进行某些动作.如参加 10000 米长跑,需要绕 400 米的赛道反复的跑 25 圈.在 ...

  4. Java学习笔记八

    IO流:就是input/output输入/输出流. 一.字节流操作文件的便捷类:FileWriter和FileReader import java.io.FileWriter; import java ...

  5. Java学习笔记(八)面向对象---抽象类

    当多个类中出现相同功能,但是功能主体不同时,我们可以向上抽取,只抽取功能定义,而不抽取功能主体. 抽象类的特点 抽象方法一定在抽象类中. 抽象方法和抽象类都必须被abstract关键字修饰. 抽象类不 ...

  6. 20145330第八周《Java学习笔记》

    20145330第八周<Java学习笔记> 第十五章 通用API 通用API 日志:日志对信息安全意义重大,审计.取证.入侵检验等都会用到日志信息 日志API Logger:注意无法使用构 ...

  7. Java IO学习笔记八:Netty入门

    作者:Grey 原文地址:Java IO学习笔记八:Netty入门 多路复用多线程方式还是有点麻烦,Netty帮我们做了封装,大大简化了编码的复杂度,接下来熟悉一下netty的基本使用. Netty+ ...

  8. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  9. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

  10. Java学习笔记【一、环境搭建】

    今天把java的学习重新拾起来,一方面是因为公司的项目需要用到大数据方面的东西,需要用java做语言 另一方面是原先使用的C#公司也在慢慢替换为java,为了以后路宽一些吧,技多不压身 此次的学习目标 ...

随机推荐

  1. 连接局域网mysql数据库

    1.先确认mysql服务端端口在防火墙是否开放外网连接(添加): windows防火墙 >高级设置 >入站规则 >新建规则 >选择端口 >添加端口 >后面直接下一步 ...

  2. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-7.接口配置文件自动映射到属性和实体类配置

    笔记 7.接口配置文件自动映射到属性和实体类配置     简介:使用@value注解配置文件自动映射到属性和实体类 1.添加 @Component或者Configuration 注解:        ...

  3. Heartbeat实现web服务器高可用

    一.Heartbeat概述: Heartbeat的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报 ...

  4. kettle记录集(Merge Join)使用

    果两个表需要进行连接查询筛选出数据,那么可以使用记录集组件.(Merge Join). 使用之前要进行排序: 使用记录集之前,要对输入的两张表进行排序,如果不排序,会导致两张表连接的时候出现问题,关联 ...

  5. 关于MacBook Pro外接4K/60HZ显示器的问题

    我踩过的坑 MacBook Pro 外接 4K/60HZ显示器[显示器自带HDMI2.0支持4k] 拓展坞不支持4K/60HZ,最后导致只能支持 30HZ,鼠标移动明显延迟. 总结如下: DVI线类长 ...

  6. Spring-Kafka —— 消费后不提交offset情况的分析总结

    最近在使用kafka,过程中遇到了一些疑问,在查阅了一些资料和相关blog之后,关于手动提交offset的问题,做一下总结和记录. 消费端手动提交offset代码如下: /** * 这是手动提交的消费 ...

  7. DevOps - DevOps工具链

    不要满足于使用世界上已存在的各种方法和技术,而应重点放在希望达到的效果上! 单单使用工具不难,困难的是在团队开发中熟练使用,并形成一套理想的工作流程,只有在团队中工具和思想才能发挥最大价值. 开源工具 ...

  8. Day03:文本数据IO操作 / 异常处理

    文本数据IO操作 Reader和Writer 字符流原理  Reader是字符输入流的父类  Writer是字符输出流的父类. 字符流是以字符(char)为单位读写数据的.一次处理一个unicode. ...

  9. day30 OSI七层协议

    网络编程 什么是网络编程? 网络编程就是编写基于网络传输数据的应用程序 为什么需要网络编程? 在我们以前的编程中,所有的数据都是存在于本地,且只能由我们自己使用,不能进行跨电脑通讯,但是在实际的生活中 ...

  10. redis db0-15 的概念

    redis默认有db0~db15之多. redis有没有什么方法使不同的应用程序数据彼此分开同时又存储在相同的实例上呢?就相当于mysql数据库,不同的应用程序数据存储在不同的数据库下. redis下 ...