学生0 学生9 学生7 学生8 学生5 学生6 学生3 学生4 学生1 学生2
以上程序是将有序的元素放入的集合中,通过第一种遍历方式打印出来的元素是无序的,说明集合的特点是无序的。下面再在上面的代码的基础上添加新的元素,代码如下:
public class HashSetTest {
//主函数
public static void main(String args[]){
//创建集合对象
java.util.HashSet
//向集合中添加元素
for (int i=0;i<10;i++){
String str = "学生"+i;
set.add(str);
}
set.add("新来的");
set.add("新同学");
//遍历1
//得到迭代器的对象
java.util.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
//向集合中添加元素
for (int i=0;i<10;i++){
String str = "学生"+i;
set.add(str);
}
set.add("新来的");
set.add("新同学");
set.add("新同学");
//遍历1
//得到迭代器的对象
java.util.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
//向集合中添加元素
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
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
//装入键值对
for (int i=0;i<10;i++){
int key = i*1000;
String value = "学生"+i;
map.put(key, value);
}
//遍历
//得到K的set集合
java.util.Set
//遍历K的集合,得到K的迭代器对象
java.util.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