JAVA常用的高级数据类型



北京哪个医院专业治疗白癜风 http://m.39.net/pf/bdfyy/bjzkbdfyy/

附:Java常用的高级数据类型——集合类型

一、JAVA语言中的集合类型主要有三种形式:Set(集)、List(列表)、Map(映射),每种类型的集合都包括三部分:接口、实现和算法。

a)集合接口实现集合的操作和集合的具体功能实现细节的相互分离——Set接口、List

接口、Map接口

b)集合的具体功能实现类实质上是各种可重用的数据结构的具体表示

List接口的实现类有ArrayList、LinkedList、Stack和Vector等集合类,Vector类

提供了实现可增长数组的功能,随着更多元素加入其中,数组变的更大。在删除

一些元素之后,数组变小。

Set接口的实现类有HashSet、LinkedHashSet和TreeSet等集合类

Map接口的实现类有HashMap、Hashtable、LinkedHashMap、Properties和

TreeMap等集合类。

c)集合的算法指可以对实现集合接口的各个集合的功能实现类提供如排序、查找、交

换和置换等方面的功能实现。

二、List接口

1.List接口代表有序的集合,可以对List接口代表的有序集合中每个元素的插入位置进行精确地控制,并利用元素的整数索引(代表元素在集合中的位置)访问元素中的各个成员,List接口代表的集合是允许出现重复元素的。

2.List接口主要成员方法:

1)voidadd(intindex,Eelement)在列表指定位置插入指定元素

2)Eget(intindex)返回结合中指定位置的元素

3)Eremove(intindex)移除集合中指定位置的元素

4)Eset(intindex,Eelment)用指定元素替换集合中指定位置的元素

5)boolean(o)向列表的尾部追加指定的元素

6)boolean(o)如果列表包含指定的元素,则返回true。

7)boolean()如果列表不包含元素,则返回true。

8)int()返回列表中的元素数

9)Iteratoriterator()返回以正确顺序在列表的元素上进行迭代的迭代器。

3.List的实现类

List在数据结构中分别表现为数组(ArrayList)、向量(Vector)、链表(LinkedList)、堆栈(Stack)和队列等形式。

Vector集合和ArrayList集合都是采用数组形式来保存对象,区别在于ArrayList集合本身不具有线程同步的特性,不能用在多线程的环境下,可以使用ArrayList集合能够节省由于同步而产生的系统性能的开销。而Vector集合实现了对线程同步的支持,因此在多线程并发访问的应用环境下,该集合本身能够保证自身具有线程安全性。在多线程的并发访问中,可以将Vector集合的对象实例设计为类中的成员属性,而应该将ArrayList集合的对象实例设计为局部对象。

publicclassUserInfo{

ListoneVector=newVector();

publicvoidexecute(){

ListoneArraylist=newArrayList();

}

}

4.example

importjava.util.ArrayList;importjava.util.List;publicclassListExample{

publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubListoneList=newArrayList();oneList.add("zhangsan");oneList.add("lisi");oneList.add(newInteger(""));//允许集合包含不同类型元素oneList.add("lisi");//允许集合包含相同元素System.out.print(oneList);

}}练习:创建一个教师类Teacher,其属性有教师号no,姓名name,性别sex和薪水salary;再创建三个教师对象并赋值;用List接口的ArrayList实现来存储教师对象,并输出相应教师信息。

三、Set接口

1.Set接口代表一个无序并且不允许元素重复存在的集合2.Set接口主要成员方法(o)如果set中尚未存在指定的元素,则添加此元素2)boolean(o)如果set中存在指定的元素,则将其移除。3)int()返回set中的元素数(其容量)4)boolean()如果set不包含元素,则返回true。

6)boolean(o)如果set包含指定的元素,则返回true。

7)Iterator()返回在此set中的元素上进行迭代的迭代器。

3.Set接口的实现类1)booleanSet接口的实现类有HashSet、LinkedHashSet和TressSet等集合类

HashSet集合中元素对象是以hashcode码作为标识,所以放入的成员元素对象的内容是不能重复的;HashSet集合中元素对象是无序的——成员元素的存储和添加时的顺序并不完全一致。对于自定义的类型需要重写hashcode()方法和equals()方法。

TreeSet集合:如果想对输入的数据进行有序排列,则要使用TreeSet子类。这里的有序是对象的大小顺序,而不是对象插入到集合当中的顺序。

LinkedHashSet是在HashSet的集合的基础上添加了双向链的支持。

4.example

importjava.util.HashSet;importjava.util.Set;publicclassHashSetDemo01{publicstaticvoidmain(String[]args){

SetallSet=newHashSet();

allSet.add("A");

allSet.add("B");

allSet.add("C");

allSet.add("C");//增加元素//增加元素//增加元素//重复元素,不能加入

allSet.add("C");

allSet.add("D");

allSet.add("E");System.out.println(allSet);

//输出集合对象,调用toString()}

}//重复元素,不能加入//增加元素//增加元素

程序运行结果:[D,A,C,B,E]练习:创建一个教师类Teacher,其属性有教师号no,姓名name,性别sex和薪水salary;再创建三个教师对象并赋值;用set集合来实现对教师对象的存储,并输出相应教师信息。

三、Map接口1.Map中的每个成员元素是由一个关键字(Key)和一个值(value)构成的。该集合中成员元素的关键字不能重复,并且每个键只能与一个值相对应。

2.Map接口主要成员方法

1)V(key,value)将指定的值与此映射中的指定键关联

2)V(key)如果存在一个键的映射关系,则将其从此映射中移除3)V(key)返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回null。

4)BooleanisEmpty()如果此映射未包含键-值映射关系,则返回true。5)int()返回此映射中的键-值映射关系数。

6)boolean(key)如果此映射包含指定键的映射关系,则返回true。

7)boolean(value)如果此映射将一个或多个键映射到指定值,则返回true。

3.Map接口的实现类

Map接口的实现类有HashMap、Hashtable、LinkedHashMap、Properties和TreeMap等集合类。

HashMap和HashTable区别于ArrayList和Vector类似,HashMap是采用非线程安全的方式设计的,效率上高于Hashtable集合。在多线程并发访问的环境下应用Hashtable集合对象时不需要开发人员单独为它的方法实现同步锁定——因为Hashtable集合中的所有方法都是同步定义的方法。在多线程的并发访问的应用环境中,开发人员可以将Hashtable集合的对象实例设计为类的成员属性对象,应该将HashMap集合的对象实例设计为方法的局部对象。

publicclassUserInfo{

MaponeHashtable=newHashtable();

publicvoidexecute(){

MaponeHashMap=newHashMap();

……

}

}

4.exampleimportjava.util.HashMap;importjava.util.Map;publicclassMapExample{

publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubMapcityHashMap=newHashMap();cityHashMap.put("beijing","北京");cityHashMap.put(2,3);//允许集合中包括不同类型的关键字和值cityHashMap.put("nanchang","南昌");

名的元素

}System.out.print(cityHashMap);cityHashMap.put("nanchang","江西");//后面元素覆盖前面相同键

}

四、迭代器Iterator

1.Iterator对集合进行迭代(遍历)。2.Iterator常用的方法1)boolean()如果仍有元素可以迭代,则返回2)Enext()返回迭代的下一个元素

3.Example1.listl=newArrayList();

2.l.add("aa");

3.l.add("bb");

4.l.add("cc");true

5.for(Iteratoriter=l.iterator();iter.hasNext();){

6.

7.Stringstr=(String)iter.next();System.out.println(str);

8.}

9./*迭代器用于while循环

10.Iteratoriter=l.iterator();

11.while(iter.hasNext()){

12.Stringstr=(String)iter.next();

13.System.out.println(str);

14.}

15.*/

练习:使用迭代器输出教师信息

一起学习java的伙伴加java直播公开课思维交流群:(←长按可复制)获取学习资料可

赞赏

长按


转载请注明:http://www.jmrrc.com/swzdzd/13347.html