链表
但需要动态地减少或添加数据项时,可以使用链表这种数据结构
Java提供的链表通常都是双链表
LinkedList泛型类
LinkedList类创建的对象称为链表对象
LinkedList<String> mylist = new LinkedList<String>();
使用add()方法向链表对象添加结点
mylist.add("你好");
mylist.add("我好");
LinkedList泛型类的常用方法
public boolean add(E element)
//向链表末尾添加结点public void add(int index, E element)
//向链表的指定位置添加一个新的结点,中的数据是参数element指定的数据public yoid clear()
//删除链表的所有结点,使当前链表成空链表。public E remove(int index)
//删除指定位置上的结点。public boolean remove(E element)
//删除首次出现含有数据lement的结点。public E get(int index)
//得到链表中指定位置处结点中的数据。public int indexOf(E element)
//返回含有数据创ement的结点在链表中首次出置,如果链表中无此结点则返回-1。public int lastIndexOf(E element)
//返回含有数据element的结点在链表中最!的位置,如果链表中无此结点则返回-1。public E set(int index,E element)
//将当前链表index位置结点中的数据替换element指定的数据,并返回被替换的数据。public int size()
//返回链表的长度,即结点的个数public boolean contains(Object element)
//判断链表结点中是否有结点含 element。
遍历链表
Java集合框架为各种数据结构的集合都提供了迭代器
由于链表的存储结构不是顺序结构,因此链表调用get()方法的速度比顺序存储数据结构的集合(ArrayList)要慢
所以链表对象可以使用iterator()方法获取一个Iterator对象,该对象就是针对当前链表的滴迭代器
例子
import java.util.Iterator;
import java.util.LinkedList;
public class Example13_3 {
public static void main(String[] args) {
LinkedList<String> mylist = new LinkedList<String>();
for (int i = 0; i <=100000 ; i++) {
mylist.add("你好"+i); //增加100000个结点
}
Iterator<String> iterator = mylist.iterator(); //获取链表的迭代器,注意迭代器要和相应的链表类型相同
long StarTime = System.currentTimeMillis(); //获取系统当前时间
while (iterator.hasNext()){
String str = iterator.next(); //
}
long EndTime = System.currentTimeMillis();
System.out.println("使用迭代器的时间" + (EndTime-StarTime) + "毫秒");
StarTime = System.currentTimeMillis(); //获取系统当前时间
for (int i = 0; i <mylist.size() ; i++) {
String str = mylist.get(i);
}
EndTime = System.currentTimeMillis();
System.out.println("使用get方法遍历的时间" + (EndTime-StarTime) + "毫秒");
}
}
运行结果
D:\HelloWorld\out\production\HelloJava Chapter_13.Part_2.Example13_3
使用迭代器的时间2毫秒
使用get方法遍历的时间5926毫秒
进程已结束,退出代码 0
需要注意的是
Java提供了顺序结构的动态数组表ArrayLiat,ArrayList类的很多方法与LinkedListL类似,二者的本质区别就是一个使用顺序结构,一个使用链式结构
进程间的通信
进程通信是指各个进程交换信息的过程
-
同步与互斥 //同步时合作进程间的直接制约问题,互斥是申请临界资源进程间的间接制约问题
1.进程间的同步
2.进程间的互斥 //各进程可以共享各类资源,但有些资源却一次只能供一个进程使用
3.临界区管理原则 //有空则进 无空则等 有限等待 让权等待 -
信号量机制
1.整形信号量与P操作和V操作 //P表示申请一个资源 //V表示释放一个资源
2.利用P操作和V操作实现进程的互斥 -
高级通信原语
由于PV操作属于低级通信方式 //编程难度大 //效率低
为了提高通信效率,减轻程序的复杂度,系统引入了高级通信方式
1.共享存储模式
2.消息传递模式
3.管道通信
CET4P181
- aluminium
- pine
- circuit
- hence
- reserve
- lens
- opening
- depart
- frequent
- sigh
- acid
- violence
- hen