当前位置:编程学习 > JAVA >>

JAVA常用集合框架

 

Java中集合类定义主要是在java.util.*包下面,常用的集合在系统中定义了三大接口,这三类的区别是:

java.util.Set接口及其子类,set提供的是一个无序集;

java.util.List接口及其子类,List提供的是一个有序集;

java.util.Map接口及其子类,Map提供了一个映射关系的集合数据结构;

每种集合都可以理解为用来在内存中存放一组对象的某种“容器”。

java.util.List接口的实现类的特点和用法:

List接口提供了多个实现的子类,常用的实现类是java.util.Vector和java.util.ArrayList,现在以java.util.ArrayList为例来说明List的特点及用法,具体代码示例如下:

public class ArrayListTest {

//主函数

public static void main(String args[]){

//创建队列对象

java.util.ArrayList<String> list = new java.util.ArrayList<String>();

//向队列中添加元素

for (int i=0;i<10;i++){

String str = "学生"+i;

list.add(str);

}

//遍历1

for (int i=0;i<list.size();i++){

//根据下标取出队列的元素

String str = list.get(i);

System.out.print(str+"\t");

}

System.out.println();

//遍历2

//得到队列的迭代器对象

java.util.Iterator<String> itr = list.iterator();

//判断是否有数据可以迭代

while(itr.hasNext()){

//取出一个元素

String str = itr.next();

System.out.print(str+"\t");

}

System.out.println();

//遍历3

for (String str:list){

System.out.print(str+"\t");

}

}

}

运行结果:

学生0     学生1     学生2     学生3     学生4     学生5     学生6     学生7     学生8     学生9    

学生0     学生1     学生2     学生3     学生4     学生5     学生6     学生7     学生8     学生9    

学生0     学生1     学生2     学生3     学生4     学生5     学生6     学生7     学生8     学生9

以上程序是先创建一个队列对象list,然后以有序的元素添加到该队列中,接下来是通过三种不同的方式遍历该队列的,第一种是通过下标值来遍历队列的,打印出来的队列也是有序的,但是仅凭这一种方式不能说明队列是有序的,所以再通过第二种遍历方式,打印出该队列,第二种遍历是先得到队列的迭代器对象,在判断是否有数据可以迭代,最后取出队列的元素。通过第二种遍历方式就可以说明队列是有序的,这两种遍历方式也都说明了队列是线性的。第三种遍历方式是在java中特有的遍历方式。

下面再把上面的代码做稍微的修改,如下所示:

public class ArrayListTest {

//主函数

public static void main(String args[]){

//创建队列对象

java.util.ArrayList<String> list = new java.util.ArrayList<String>();

//向队列中添加元素

for (int i=0;i<15;i++){

String str = "学生"+i;

list.add(str);

}

list.add("新同学");

list.add("新同学");

list.add("新来的");

//遍历1

for (int i=0;i<list.size();i++){

//根据下标取出队列的元素

String str = list.get(i);

System.out.print(str+"\t");

}

System.out.println();

//遍历2

//得到队列的迭代器对象

java.util.Iterator<String> itr = list.iterator();

//判断是否有数据可以迭代

while(itr.hasNext()){

//取出一个元素

String str = itr.next();

System.out.print(str+"\t");

}

System.out.println();

 

//遍历3

for (String str:list){

System.out.print(str+"\t");

}

 

}

 

}

运行结果:

学生0     学生1     学生2     学生3     学生4     学生5     学生6     学生7     学生8     学生9     学生10   学生11   学生12   学生13      学生14   新同学    新同学    新来的   

学生0     学生1     学生2     学生3     学生4     学生5     学生6     学生7     学生8     学生9     学生10   学生11   学生12   学生13      学生14   新同学    新同学    新来的   

学生0     学生1     学生2     学生3     学生4     学生5     学生6     学生7     学生8     学生9     学生10   学生11   学生12   学生13      学生14   新同学    新同学    新来的

以上程序添加是在队列中添加了新的元素,并且有添加相同的元素,从运行结果可知,队列是长度可变的,可以有相同重复的元素。

根据以上两段代码的运行结果可知,队列的特点是线性的,有序的,长度可变的,有下标值的,元素可重复的。

Java.util.Set接口的实现类的特点及用法:

Set是一个接口定义,所以只能使用它的实现子类,Set接口常用的子类有java.util.HashSet、java.util.TreeSet;这里以java.util.HashSet为例说明它的特点及用法,请看下面代码示例:

public class HashSetTest {

 

//主函数

public static void main(String args[]){

 

//创建集合对象

java.util.HashSet<String> set = new java.util.HashSet<String>();

 

//向集合中添加元素

for (int i=0;i<10;i++){

String str = "学生"+i;

set.add(str);

}

//遍历1

//得到迭代器的对象

java.util.Iterator<String> iter = set.iterator();

while(iter.hasNext()){

String str = iter.next();

System.out.print(str+"\t");

}

System.out.println();

//遍历2

for (String str:set){

System.out.print(str+"\t");

}    

}

 

}

运行结果:

学生0     学生9     学生7     学生8     学生5     学生6     学生3     学生4     学生1     学生2    

学生0     学生9     学生7     学生8     学生5     学生6     学生3     学生4     学生1     学生2

以上程序是将有序的元素放入的集合中,通过第一种遍历方式打印出来的元素是无序的,说明集合的特点是无序的。下面再在上面的代码的基础上添加新的元素,代码如下:

public class HashSetTest {

 

//主函数

public static void main(String args[]){

 

//创建集合对象

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,