版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章 常用工具类和Applet小程序Java的API中包含了大量的预定义类,我们将主要介绍Java的实用工具包java.util中的常用的一些数据结构类和工具类。另外,我们还将在本章中给大家介绍关于Applet小程序的基本知识。Java中引入了可以集中有效地组织和处理数据的接口和类,这些接口和类组成了Java的集合(Collection)框架。Java的集合框架支持三种类型的集合:线性表List、规则集Set和映射Map。Set的实例存储一组互不相同的元素,List的实例存储一组顺序排列的元素,Map的实例存储一组对象,该实例中的每个元素都有一个关联的关键字。Collection接口是构造集
2、合框架的基础,它是处理对象集合的根接口,声明了所有Collection类都将拥有的核心方法,具体见表6-1。表6-1 Collection接口声明的方法方法功能描述boolean add(Object obj)为当前调用的集合添加元素objboolean addAll(Collection c)将c中的所有元素加入调用的集合中void clear()删除当前集合的所有元素boolean contains(Objecto)若当前集合包含元素o则返回true,否则返回falseboolean containsAll(Collection c)若当前集合包含集合c的所有元素则返回trueboolea
3、n equals(Objecto)若当前集合与o相等则返回true,否则返回falseint hashCode()返回当前集合的散列码boolean isEmpty()若当前集合不包含任何元素则返回trueIterator iterator( )返回当前集合元素的迭代探子boolean remove(Objecto)删除当前集合中的元素oboolean removeAll(Collection c)删除集合c中的所有元素boolean retainAll(Collection c)删除当前集合中与集合c共有的元素,若当前集合发生变化则返回true,否则返回falseint size()返回当前
4、集合元素的个数Object toArray()返回当前集合所有元素构成的数组Object toArray(Object array )返回当前集合中指定数组元素类型相匹配的元素构成的数组6.1 List和ArrayList类6.1.1 ListList接口扩展了Collection接口,定义了一个可以存储重复元素的有序集合。用户可以通过指定下标访问元素,并可以指定元素在集合中的存储位置。在List类集中,下标从0开始。List接口除继承了Collection接口声明的方法外,还定义了它自己的一些方法,具体见表6-2。表6-2 List接口声明的方法方法功能描述boolean add(int i
5、ndex, Object element)为当前调用的线性表添加元素element,插入位置由index指定,原有index位置及其右部的元素均后移boolean addAll(int index, Collection c)将c中的所有元素插入调用的线性表中指定下标index位置,列表中原有index位置及其右部的元素均顺序后移Object get(int index)返回线性表中由index指定位置的元素int indexOf(Objectelement)返回线性表中与指定元素element匹配的第一个元素的下标值,若elenemt不在列表中则返回-1。int lastIndexOf(Ob
6、jectelement)返回线性表中与指定元素element匹配的最后一个元素的下标值,若elenemt不在列表中则返回-1。ListIterator listIterator()返回当前线性表元素的迭代探子ListIterator listIterator(int index)返回当前线性表中从index开始的元素的迭代探子int remove(intindex)删除线性表中指定下标位置index的元素Object set(int index, Object element)将线性表中指定下标index处的元素替换为elementList subList(int fromIndex, int
7、 toIndex)返回当前线性表中下标从fromIndex到toIndex的子线性表6.1.2 ArrayList类 在Java中的数组是定长的,一旦数组被创建后就无法改变其大小。若在定义数组时还无法确定其存储空间,只有在程序运行时才能知道实际需要的数组空间时,可以选择通过ArrayList类声明可变长度的数组。 ArrayList类实现了List接口,它将元素存储在一个动态数组中,存储空间大小可随存储元素的多少进行动态变化。 ArrayList提供了三个构造函数: ArrayList() ArrayList(Collectionc) ArrayList(intinitialCapacity)
8、 其中构造函数用于创建一个空数组列表,构造函数用于建立一个包含集合c中所有元素的数组列表,构造函数用于建立一个指定初始大小为initialCapacity的数组列表。例6.1 创建一个空数组列表,在其中顺序添加A、B、C、D、E、F六个对象,并显示该数组列表的内容和大小。然后在该数组列表中添加和删除元素,并将修改后的数组列表内容输出。程序源代码见ArrayListExample.java,程序运行结果见图6-1。/ArrayListExample.javaimport java.util.*;public class ArrayListExample public static void ma
9、in(String args)ArrayList arraylist = new ArrayList(); /建立一个空数组列表/向arraylist中依次添加A、B、C、D、E、F arraylist.add(A);arraylist.add(B);arraylist.add(C);arraylist.add(D);arraylist.add(E);arraylist.add(F);/显示arraylist的内容和大小System.out.println(The original contents of the arraylist is: + arraylist);System.out.pr
10、intln(The original size of the arraylist is: + arraylist.size();arraylist.add(2,A); /在下标位置为2处插入Aarraylist.add(4,new Integer(5); /在下标位置为4处插入整数5/输出插入元素A和5以后arraylist的内容和大小System.out.println(After adding elements,the arraylist is: + arraylist);System.out.println(The size of the arraylist is: + arraylis
11、t.size();arraylist.remove(E); /删除Earraylist.remove(1); /删除下标1处存放的对象/输出删除元素E和下标为1处的元素后arraylist的内容和大小System.out.println(After deleting elements,the arraylist is: + arraylist);System.out.println(The size of the arraylist is: + arraylist.size();System.out.println();图6-1 例6.1运行结果说明:从该程序的输出结果可知,在Arraylis
12、t中可以存放相同的元素,从图6-1中可以看到A在arraylist中存放了两次。数组列表的大小将随数组列表中存放元素的个数而变化。在ArrayListExample.java中调用了size()方法来获取arraylist的元素个数,size()方法是ArrayList类从List接口继承下来的方法。 与ArrayList类相似的还有LinkedList类。LinkedList类也实现List接口,它将元素存储在链表中。用户可以根据实际需要选择合适的数据结构类来解决问题。当只在线性表尾部进行插入或删除元素的操作,选择ArrayList类声明的数组效率相对会高一些;若需要在线性表的任意位置插入或
13、删除元素,LinkedList类声明的数组效率会更高一些。 LinkedList提供了两个构造函数: LinkedList() LinkedList(Collection c)其中构造函数用于创建一个空链接列表,构造函数用于建立一个包含集合c中所有元素的链接列表。例6.2 创建一个空链接列表,并在其中依次添加1、2、3、4、5共5个元素,显示该链接列表的内容和大小。然后在该链接列表中添加和删除元素,并将修改后的链接列表内容输出。程序源代码见LinkedListExample.java,程序运行结果见图6-2。/LinkedListExample.javaimport java.util.*;p
14、ublic class LinkedListExample public static void main(String args)LinkedList linkedlist = new LinkedList(); /建立一个空链接列表/向linkedlist中依次添加1、2、3、4、5linkedlist.add(new Integer(1);linkedlist.add(new Integer(2);linkedlist.add(new Integer(3);linkedlist.add(new Integer(4);linkedlist.add(new Integer(5);/显示lin
15、kedlist的内容System.out.println(The original contents of the linkedlist is: );System.out.println(linkedlist);linkedlist.add(2,hello); /在列表下标为2处添加字符串hellolinkedlist.addFirst(First); /在linkedlist列表头添加字符串Firstlinkedlist.addLast(Last); /在linkedlist列表尾添加字符串LastSystem.out.println(After adding elements,the li
16、nkedlist is: );System.out.println(linkedlist);linkedlist.removeLast(); /删除linkedlist列表尾部的元素linkedlist.set(1,one); /将列表下标为1处的元素替换为字符串oneSystem.out.println(After deleting and changing,the linkedlist is: );System.out.println(linkedlist);System.out.println();图6-2 例6.2运行结果说明:LinkedList类除了继承List接口定义的方法外,还
17、有自定义的一些方法。如:addFirst(object o)方法用于在列表头添加元素o;addLast(object o)方法用于在列表尾添加元素o;removeFirst()方法用于删除位于列表头的元素;removeLast()方法用于删除列表尾的元素;getFirst()方法用于访问列表头的元素;getLast()方法用于访问列表尾的元素。6.2 Set和HashSet类Set接口扩展了Collection接口,和List接口不同的是,Set定义的集合中不能包含相同的元素。Set除了继承Collection定义的方法外,本身并没有定义其他的方法。HashSet类实现了Set接口,由Hash
18、Set类声明的集合使用散列表(hash table),它当中存放的元素并没有特殊的顺序。HashSet提供了四个构造函数: HashSet() HashSet(Collectionc) HashSet(intinitialCapacity) HashSet(intinitialCapacity, float loadFactor)其中构造函数用于创建一个默认的空散列集,构造函数用于建立一个包含集合c中所有元素的散列集,构造函数用于建立一个指定初始大小为initialCapacity的散列集,构造函数用于建立一个指定初始大小为initialCapacity和负载系数为loadFactor的散列集
19、。负载系数介于0.0到1.0之间,当元素个数大于集合容量大小乘以负载系数,集合容量将被扩大。例6.3 创建一个散列集,并显示该散列集的内容。程序源代码见HashSetExample.java,程序运行结果见图6-3。/HashSetExample.javaimport java.util.*;public class HashSetExample public static void main(String args) HashSet hashset = new HashSet(); /建立一个空散列集hashset.add(星期一);hashset.add(星期二);hashset.add(
20、星期三);hashset.add(星期四);hashset.add(星期五);hashset.add(星期五);System.out.println(The elements of the hashset are:);for(Object element:hashset) System.out.print(element.toString()+ );System.out.println();图6-3 例6.3运行结果说明:从图中可以看到HashSet类的对象并不按指定顺序存放元素,并且不能存放相同元素。在HashSetExample.java中使用了for循环语句表述形式for(Object
21、element:hashset)来访问hashset中的所有元素。6.3 Map和HashMap类6.3.1 MapMap接口用于存储元素和关键字的映射关系,在Map中关键字相当于List中的下标值,用于检索元素的对象。所不同的是,List的下标定义为整数,而在Map中关键字可以定义为任意类型的对象,但必须是唯一的,不能有重复。每个关键字都对应于一个存放在Map对象中的元素,元素的值是可以重复的。Map接口定义的方法见表6-3。表6-3 Map接口定义的方法方法功能描述void clear();从当前Map对象中删除所有的关键字和元素boolean containsKeys(Object ke
22、y);若当前Map对象中包含了key作为关键字,则返回true,否则返回falseboolean containsValue(Object value);若当前Map对象中包含了value作为元素值,则返回true,否则返回falseSet entrySet();返回当前Map对象的所有映射的集合视图boolean equals(Object o);比较对象o和当前Map对象是否相同,若相同则返回true,否则返回falseObject get(Object key);返回当前Map对象中指定关键字为key对应的元素值int hashCode();返回当前Map对象的散列码boolean is
23、Empty();若当前Map对象是空的则返回true,否则返回falseSet keySet();返回当前Map对象的所有关键字的集合视图Object put(Object key, Object value);在当前Map对象中将value和关键字key进行关联,若在Map对象中已存在和key关联的元素,则该元素被value替换void putAll(Map m);将映射m的内容全部添加到当前Map对象中Object remove(Object key);若关键字key存在于当前Map对象中,则删除该关键字对应的映射内容int size();返回当前Map对象中“关键字/元素值”对的个数Co
24、llection values();返回当前Map对象的所有元素值构成的集合Map接口的具体实现由AbstractMap、HashMap、TreeMap和LinkedHashMap等类完成,其中HashMap使用散列表实现Map接口,它对于定位查找元素、插入删除映射等操作效率都是很高的。6.3.2 HashMap类HashMap类使用散列表来实现Map接口,该类实现了所有Map接口定义的操作,并且允许空值和空关键字存在于对象中。由于使用了散列码,因此在HashMap中并不保证元素的存放顺序和它加入该集合的顺序是一致的。HashMap提供了四个构造函数: HashMap() HashMap(Ma
25、p m) HashMap(intinitialCapacity) HashMap(intinitialCapacity, float loadFactor)其中构造函数用于创建一个默认的空HashMap对象,构造函数用于建立一个包含映射m的所有内容的HashMap对象,构造函数用于建立一个指定初始大小为initialCapacity的HashMap对象,构造函数用于建立一个指定初始大小为initialCapacity和负载系数为loadFactor的HashMap对象。例6.4 创建一个HashMap对象,用它来存放学生的姓名和宿舍房间号,并显示该对象的内容。程序源代码见HashMapExam
26、ple.java,程序运行结果见图6-4。/HashMapExample.javaimport java.util.*;public class HashMapExample public static void main(String args)HashMap hashmap = new HashMap(); /建立一个空HashMap对象hashmap /向hashmap中添加“关键字/元素值”对hashmap.put(李四,301);hashmap.put(张三,302);hashmap.put(王五,303);hashmap.put(陈七,304);hashmap.put(赵六,305
27、);Set set = hashmap.entrySet(); /取得hashmap的所有映射集合 /使用迭代函数来访问hashmap的每一对映射Iterator i = set.iterator();while (i.hasNext() Map.Entry m = (Map.Entry) i.next();System.out.println(m.getKey()+: +m.getValue();System.out.println();System.out.println(请输入要查询的学生姓名:);Scanner scanner=new Scanner(System.in);String
28、 s=scanner.next(); /从控制台读取输入字符串System.out.println(s+的房间号为:+hashmap.get(s); /给出以输入字符串作为/关键字的元素值System.out.println();图6-4 例6.4运行结果说明:从该例子的运行结果可以看到,实际输出的元素值顺序和存放的顺序是不相同的。在本程序中,我们使用了从Collection接口中继承下来的迭代函数iterator(),该函数返回一个迭代探子Iterator对象。Iterator接口定义的方法是用来遍历类集,从而获取或者删除类集中的元素。在本例中使用了Iterator接口定义的hasnext(
29、)方法 ,该方法是遍历类集对象最常用的方法,用来判断是否还存在元素,若存在则返回true,否则返回false。除此以外,在遍历hashmap时,我们还使用了Map.entry接口,该接口主要用来操作映射的输入,在该接口中定义了getKey()方法和getValue()方法分别返回当前映射项的关键字和元素值。6.4 Vector类和Stack类在Java 2出现以前,Java中也定义了一些专门用于存放对象的类集和接口,Vector类和Stack类就是从以前留下的类,在Java2中将它们做了进一步改进以适用于现在Java 2的集合框架。6.4.1 Vector类Vector和ArrayList类似
30、,也实现List接口,可以用来声明动态数组。但与ArrayList不同的是,Vector中包含了同步方法,可以防止两个以上线程同时访问引起的数据冲突。Vector类定义了四个构造函数:Vector() Vector(Collectionc) Vector(intinitialCapacity) Vector(intinitialCapacity, intcapacityIncrement)其中构造函数用于创建一个空矢量;构造函数用于建立一个包含集合c中所有元素的矢量;构造函数用于建立一个指定初始大小为initialCapacity的空矢量;构造函数用于建立一个指定初始大小为initialCap
31、acity和增量为capacityIncrement的空矢量。矢量的增量是指当需要对矢量分配额外的空间时,由该增量来指定额外空间的大小。例6.5 一个简单的Vector类使用示例,程序源代码见VectorExample.java,程序运行结果见图6-5。/VectorExample.javaimport java.util.*;public class VectorExample public static void main(String args) Vector vector = new Vector(5,5); /建立一个初始大小为5、增量为5的矢量 /输出vector中当前元素的个数S
32、ystem.out.println(The initial size of the vector is: + vector.size(); /输出vector当前的容量大小System.out.println(The initial capacity of the vector is: + vector.capacity(); /将115中的偶数添加至vector中for(int i=1;i=15;i+)if(i%2=0)vector.add(new Integer(i);System.out.println(After adding elements,the vector is:);Syst
33、em.out.println(vector);System.out.println(After adding elements,the size is: + vector.size();System.out.println(After adding elements,the capacity is: + vector.capacity();System.out.println();vector.addElement(hello); /在vector尾部添加字符串hellovector.addElement(Java); /在vector尾部添加字符串Java /使用迭代函数iterator()
34、遍历vector中的所有元素并输出Iterator vectorItr = vector.iterator();System.out.println(Now the elements of the vector are:);while(vectorItr.hasNext()System.out.print(vectorItr.next() + );System.out.println();Integer first = (Integer)vector.firstElement(); /访问vector的第一个元素String last = (String)vector.lastElement(
35、); /访问vector的最后一个元素System.out.println(The first elements is: + first);System.out.println(The last element is: + last);if(vector.contains(hello) /判断hello是否被包含在vectorSystem.out.println(hello is in the vector. );System.out.println();图6-5 例6.5运行结果说明:VectorExample.java程序中调用Vector(5,5)建立了一个空Vector对象vector
36、,同时指定该vector初始容量大小为5,增量为5,即当vector中元素超过当前容量大小时,它的大小将增加5。在本例中向vector添加115中的所有偶数共7个元素后,通过调用方法capacity()可以得到vector的容量大小为10。在本例中还调用了Collection接口中的iterator()方法遍历vector中的元素,该方法返回Iterator接口的一个对象,Iterator接口定义了hasNext()方法判断是否存在下一个元素,next()方法用于返回下一个元素。当然,也可以使用循环语句for(Object element:vector) 来逐个遍历vector中的元素。6.4
37、.2 Stack类Stack类是Vector类的子类,它实现“后进先出”的堆栈。由于Stack类扩展了Vector类,所以Stack除了包含Vector定义的所有方法外,还增加了几种自定义的方法,见表6-4。表6-4 Stack类自定义的方法方法功能描述boolean empty()测试该栈是否为空,空则返回TrueObject peek()查看位于栈顶的元素并返回该元素Object pop()将栈顶元素出栈并返回该元素Object push(Objecto)将元素o入栈并返回该元素int search(Objecto)在栈内查找元素o,若找到则返回该元素在栈内的相对栈顶的距离,若找不到则返回
38、-1。例6.6 使用Stack类将任意输入的字符串逆序输出,程序源代码见StackExample.java,程序运行结果见图6-6。/StackExample.javaimport java.util.*;public class StackExample public static void main(String args) String s1;System.out.print(Please input a string: );Scanner scanner=new Scanner(System.in);s1=scanner.next();int length = s1.length();
39、char s = s1.toCharArray(); /将String类型字符串转换为字符数组System.out.print(Reverse the string,we will get: );Stack stack = new Stack(); /创建一个空Stack对象for(int i=0;ilength;i+)stack.push(si); /将字符数组s的字符顺序入栈 while(!stack.empty() /判断当前Stack是否为空System.out.print(stack.pop(); /将栈内字符顺序出栈System.out.println();图6-6 例6.6运行结
40、果6.5 泛型在例6.4中可以看到如下一段代码:Integer first = (Integer)vector.firstElement(); /访问vector的第一个元素String last = (String)vector.lastElement(); /访问vector的最后一个元素这种类型转换是必须的,因为firstElement()和lastElement()方法返回的是Object类型的数据,为了保证Integer类型和String类型变量赋值的安全性,必须在此进行类型转换。但是,这种类型转换往往很容易带来混乱和错误。为了避免出现类型转换带来的错误情况,当用户已经明确了集合中的
41、数据都为一种类型时,可以使用Java中的泛型(generic type)来限定集合中的数据为该确定的数据类型。泛型提供了编译时检查类型的机制。假设需要定义一个ArrayList类型的对象,而用户希望该对象中所存放的数据都是String类型,则可以使用以下方法来声明这个对象:ArrayList arraylist = new ArrayList();使用该语句创建arraylist后,只能向该对象中添加String类型的数据,如果用户向该对象内添加了一个非String类型的数据,则程序在编译时会产生错误。同样的,从该集合中取数据值时,用户无需进行类型转换,因为编译器已经知道元素的类型了。例6.7
42、 一个简单的泛型使用示例,程序源代码见GenericTypeExample.java,程序运行结果见图6-7。/GenericTypeExample.javaimport java.util.*;public class GenericTypeExample public static void main(String args)/建立一个只含有整型元素的空列表List list = new ArrayList(); /向list中依次添加整型元素12、9、35、147、58list.add(12);list.add(9);list.add(35);list.add(147);list.add
43、(58);Iterator listItr = list.iterator();System.out.println(Now the elements of the list are:);while(listItr.hasNext() System.out.print(listItr.next() + ); System.out.println();int thirdelem = list.get(2); /获取列表中下标为2处的元素System.out.println(The third element is: +thirdelem);图6-7 例6.7运行结果说明:所有的集合架构类型都支持
44、泛型,如HashSet、LinkedList、HashMap等等。从本例中可以看到,向list中添加元素时并没有使用在例6.2中使用的类型转换list.add(Integer(12),而是直接使用语句list.add(12),因为在声明list时已经限定了该集合存放的元素只能是Integer型,所以编译器会自动将“12”做为Integer型来处理。同样在获取list中的元素时也不需要做如语句int thirdelem = (Integer)list.get(2) 的类型转换,而可以将该语句直接写为int thirdelem = list.get(2)。6.6 Applet小程序Applet是可
45、通过因特网下载并在接收计算机上运行的一小段程序。Java Applet可以在Internet中传输,并且能在所有支持Java的浏览器中运行,它的最大特点是能对用户的要求作出反应,并进行相应的变化。所有的Applet都是属于Java中Applet类的子类。Applet类被包含在java.applet类库中,因此所有的Applet都必须调用java.applet类库才能正常执行。Applet并不是在控制台环境的窗口中执行,而是由浏览器或Applet阅读器(appletviewer)执行。由于Applet是从服务器端下载,通过网络传输并在客户端浏览器运行的程序代码,我们必然要考虑Applet的安全性
46、问题。Java设计者在应用程序和本地计算机之间提供了一道安全的防火墙,使用户可以安全的下载Applet。通过沙箱(sandbox)机制将Java Applet限制在Java运行环境中,不允许它访问计算机的其它部分,确保下载的Applet不会对客户机造成危害,同时不用担心病毒的入侵。6.6.1 Applet的常用方法 到目前为止,我们使用过的Java Application,每一个Application都必须有main()方法,该方法作为Java Application程序的入口,在Application开始执行时由Java解释器调用。而Applet与Application不同,Applet不必
47、定义main()方法,它依靠浏览器调用Applet类中的方法执行。每个Applet都是java.applet.Applet的子类,因此,在定义Applet时,可以将它的总体结构表示为: import java.applet.*;import java.awt.*;public class NewApplet extends Applet public NewApplet() public void init() public void start() public void stop() public void destory() public void paint (Graphics g)
48、在这个程序段中,通过覆盖Applet的几个主要成员函数完成小应用程序的初始化、绘制和运行。这些函数是init()、start()、stop()、destroy()和paint()。其中init()、start()、stop()、destroy()是由Applet类定义的,它们描述了Applet从初始化、运行、终止到结束的整个生命周期,而paint()是由AWT组件类定义的。下面将详细介绍这几种方法的主要工作过程。1init()浏览器首次加载Applet、准备运行时将调用init()方法。该方法通知该Applet装载到系统中,主要实现创建线程、装载图像、从HTML文件的标记获得参数等功能。 2s
49、tart()start()方法在init()方法完成后调用。当Applet开始执行时或停止Applet后再重新启动时(如用户离开该Applet所在web页面后,再次重新进入该web页面时)也会调用start()方法。3paint()在Applet开始执行或每次Applet的输出必须重画窗口时(如Applet窗口被缩小再复原时等情况),paint()方法都被调用。4stop()用户离开Applet所在的web页面,将applet挂起时将调用stop()方法。当stop()方法被调用时,Applet程序可能还在运行,因此,应该使用stop()方法挂起一些在小应用程序不可见时不需要运行的线程,以使不
50、活动的Applet不占用系统资源。5destory()destory()方法在Applet生命周期结束(用户退出浏览器)、Applet结束之前被调用。浏览器正常退出时会通知Applet,它已经不在需要并且应该释放所占的资源,这时就会调用destory()方法。一般情况下不需要覆盖这一方法,除非要释放指定的资源。stop()方法总是在destory()方法之前被调用。6.6.2 标记一个完整的Applet文件主要由Java源程序和HTML文档构成。HTML是一种脚本语言,它通过使用相应的标记定义文档显示内容并由Web浏览器解释执行。在HTML文档中使用标记可以将Applet嵌入Web页面。Applet中的Java源程序经过编译后,就被包含在一个HTML文件中,当支持Java的浏览器遇到HTML中的标记时,就会执行相应的Applet程序。标记的描述格式如下:属性CODE、WIDTH和HEIGHT是必须的,其它用中括号“”括起的属性是可选的。属性CODE给定了Applet程序编译过的.class文件的名字,这个文件是与Applet的url相关的,若 CODEBA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老年帕金森康复治疗师岗位招聘考试试卷及答案
- 快闪装置电路调试技师岗位招聘考试试卷及答案
- 2025年双头应急灯合作协议书
- 航运与港口管理操作手册
- 旅游行业旅游产品设计指南
- 建筑工程技术规范与质量检查手册(标准版)
- 企业内控测试与评估指南
- 餐饮服务人员职业素养手册
- 金融理财产品销售技巧指南(标准版)
- 旅游服务礼仪与接待规范
- 2025年重庆高考物理试卷试题真题及答案详解(精校打印)
- 土改田施工方案(3篇)
- 河北省衡水中学2026届数学高一上期末质量跟踪监视模拟试题含解析
- 安乐死协议书模板
- 2026内蒙古自治区行政执法人员专场招收1991人参考笔试试题及答案解析
- 断路器绝缘电阻试验方法
- 智能机械臂路径规划算法的创新探索
- 成自铁路成都罗家湾牵引站220千伏供电工程环境影响报告表
- 作业人员安全管理档案
- 2025体育单招英语备考100个高频名词精讲(精校打印版)
- 开票税点自动计算器
评论
0/150
提交评论