JAVA常用集合框架(二)

2014-11-24 01:36:53 · 作者: · 浏览: 3
学生4 学生1 学生2

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

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

public class HashSetTest {

//主函数

public static void main(String args[]){

//创建集合对象

java.util.HashSet set = new java.util.HashSet();

//向集合中添加元素

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

String str = "学生"+i;

set.add(str);

}

set.add("新来的");

set.add("新同学");

//遍历1

//得到迭代器的对象

java.util.Iterator 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.util.HashSet set = new java.util.HashSet();

//向集合中添加元素

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

String str = "学生"+i;

set.add(str);

}

set.add("新来的");

set.add("新同学");

set.add("新同学");

//遍历1

//得到迭代器的对象

java.util.Iterator 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.util.HashSet set = new java.util.HashSet();

//向集合中添加元素

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

String str = "学生"+i;

set.add(str);

}

set.add("新来的");

boolean st1 = set.add("新同学");

boolean st2 = set.add("新同学");

System.out.println(st1+"<>"+st2);

//遍历1

//得到迭代器的对象

java.util.Iterator 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");

}

}

}

运行结果:

true<>false

学生0 新同学 学生9 学生7 学生8 新来的 学生5 学生6 学生3 学生4 学生1 学生2

学生0 新同学 学生9 学生7 学生8 新来的 学生5 学生6 学生3 学生4 学生1 学生2

从运行结果来看,添加的是第一个相同的元素。从以上的代码运行的结果中可知道,集合的特点是长度可变的,无序的,元素是不重复的。

Java.util.Map接口的特点及用法:

Java提供了专门的集合类用来存放映射对象的,即Java.util.Map接口,Map是一个接口,有多种具体的实现类,常用的有HashMap和Hashtable类实现。Map中存入的对象是一对一对的,即每个对象和它的一个键关联在一起。从API文档中可知,Map中存放的是两种对象,一种称为key(键),一种称为value(值),他们在Map中是一一对应关系。Map中的键是不能重复的,但值是可以重复的。下面以java.util.HashMap为例说明它的特点及用法,请看下面的示例代码:

public class HashMapTest {

//主函数

public static void main(String args[]){

//创建一个映射对象

java.util.HashMap map = new java.util.HashMap();

//装入键值对

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

int key = i*1000;

String value = "学生"+i;

map.put(key, value);

}

//遍历

//得到K的set集合

java.util.Set set = map.keySet();

//遍历K的集合,得到K的迭代器对象

java.util.Iterator iter = set.iterator();

while(iter.hasNext()){

int num = iter.next();

String str = map.get(num);

System.out.println(num+"\t"+str);

}

}

}

运行结果:

0 学生0

1000 学生1

2000 学生2

3000