华清远见-重庆中心-JAVA高级阶段技术总结

Java数据结构

  • 枚举 (Enumeration)  接口虽然它本身不属于数据结构,但它在其他数据结构的范畴里应用很 广。 枚举(The Enumeration)接口定义了一种从数据结构中取回连续元素的方式。

  • 位集合 (BitSet),位集合类实现了一组可以单独设置和清除的位或标志。
  • 向量 (Vector),向量(Vector)类和传统数组非常相似,但是Vector的大小能根据需要动态的变化。
  • 栈 (Stack)实现了一个后进先出(LIFO)的数据结构
  • 字典 (Dictionary)类是一个抽象类,它定义了键映射到值的数据结构。
  • 哈希表 (Hashtable)Hashtable类提供了一种在用户定义键结构的基础上来组织数据的手段。
  • 属性 (Properties)Properties 继承于 Hashtable.Properties 类表示了一个持久的属性集.属性列表中每个键及其对应值都是一个字符串。

以上这些类是传统遗留的,在Java2中引入了一种新的框架 (Collection) 。 

Java ArrayList

ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。

ArrayList 继承了 AbstractList ,并实现了 List 接口。

图示:

 ArrayList 类位于 java.util 包中,使用前需要引入它,语法格式如下:

import java.util.ArrayList;//引入 ArrayList 类
ArrayList<E> objectName = new ArrayList<>();//初始化
  • E表示: 泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型

 

Java LinkedList

链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。

LinkedList 类位于 java.util 包中,使用前需要引入它,语法格式如下:

// 引入 LinkedList 类
import java.util.LinkedList; 

LinkedList<E> list = new LinkedList<E>();   // 普通创建方法
或者
LinkedList<E> list = new LinkedList(Collection<? extends E> c); // 使用集合创建链表

Java HashSet

HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。

HashSet 中的元素实际上是对象,一些常见的基本类型可以使用它的包装类。

基本类型对应的包装类表如下:

基本类型 引用类型
booleanBoolean
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter

HashSet 类位于 java.util 包中,使用前需要引入它,语法格式如下:

import java.util.HashSet;//引入 HashSet 类

以下示例我们创建一个HashSet对象sites,用于保存字符串元素:

HashSet<String> sites = new HashSet<String>();

Java HashMap

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。

HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。存储的内容是键值对(key-value)映射。

 图示:

 HashMap 类位于 java.util 包中,使用前需要引入它,语法格式如下:

import java.util.HashMap;//引入 HashMap 类

以下示例我们创建一个 HashMap 对象 Sites, 整型(Integer)的 key 和字符串(String)类型的 value:

HashMap<Integer,String> Sites = new HashMap<Integer,String>();

Java Iterator(迭代器)

Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。

Iterator 是 Java 迭代器最简单的实现,ListIterator 是 Collection API 中的接口, 它扩展了 Iterator 接口。

Iterator 类位于 java.util 包中,使用前需要引入它,语法格式如下:

import java.util.Iterator; // 引入 Iterator 类

Java Object类

Java Object 类是所有类的父类,也就是说 Java 的所有类都继承了 Object,子类可以使用 Object 的所有方法

Object 类位于 java.lang 包中,编译时会自动导入,我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承 Object,成为 Object 的子类。

Object类可以显示继承,也可以隐式继承,以下两种方式是一样的:

public class Runoob extends Object{
    
}

隐式继承:

public class Runoob{

}

类的方法

序号方法&描述
1protected Object clone()

创建并返回一个对象的拷贝

2boolean equals(Object obj)

比较两个对象是否相等

3protected void finalize()

当 GC (垃圾回收器)确定不存在对该对象的有更多引用时,由对象的垃圾回收器调用此方法。

4Class<?> getClass()

获取对象的运行时对象的类

5int hashCode()

获取对象的 hash 值

6void notify()

唤醒在该对象上等待的某个线程

7void notifyAll()

唤醒在该对象上等待的所有线程

8String toString()

返回对象的字符串表示形式

9void wait()

让当前线程进入等待状态。直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。

10void wait(long timeout)

让当前线程处于等待(阻塞)状态,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过参数设置的timeout超时时间。

11void wait(long timeout, int nanos)

与 wait(long timeout) 方法类似,多了一个 nanos 参数,这个参数表示额外时间(以纳秒为单位,范围是 0-999999)。 所以超时的时间还需要加上 nanos 纳秒。

Java 多线程编程

Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。

这里定义和线程相关的另一个术语 - 进程:一个进程包括由操作系统分配的内存空间,包含一个或多个线程。一个线程不能独立的存在,它必须是进程的一部分。一个进程一直运行,直到所有的非守护线程都结束运行后才能结束。

多线程能满足程序员编写高效率的程序来达到充分利用 CPU 的目的。

 一个线程的生命周期

线程是一个动态执行的过程,它也有一个从生产到死亡的过程

线程完成的生命周期图示:

 为了实现 Runnable,一个类只需要执行一个方法调用 run(),声明如下:

public void run();

 

你可以重写该方法,重要的是理解的 run() 可以调用其他方法,使用其他类,并声明变量,就像主线程一样。

在创建一个实现 Runnable 接口的类之后,你可以在类中实例化一个线程对象。

Thread 定义了几个构造方法,下面的这个是我们经常使用的:

Thread(Runnable threadOb,String threadName);

这里,threadOb 是一个实现 Runnable 接口的类的实例,并且 threadName 指定新线程的名字。

新线程创建之后,你调用它的 start() 方法它才会运行。

void start();

高级教程总结

多敲!多练!多问!多看!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值