4000 学生4
5000 学生5
6000 学生6
7000 学生7
8000 学生8
9000 学生9
上面的程序是向映射中添加入有序的元素,打印出的也是有序的元素,从运行的结果看,认为映射是有序的,但是稍微改一下程序,元素顺序结果就不一样了,代码如下:
public class HashMapTest {
//主函数
public static void main(String args[]){
//创建一个映射对象
java.util.HashMap
//装入键值对
for (int i=0;i<15;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
11000 学生11
13000 学生13
2000 学生2
4000 学生4
6000 学生6
8000 学生8
10000 学生10
1000 学生1
12000 学生12
3000 学生3
14000 学生14
5000 学生5
7000 学生7
9000 学生9
从上面的运行结果可知,映射也是种无序的集合。
像上面的集合一样向映射中添加重复相同的元素,代码如下:
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);
}
map.put(1234,"新同学");
map.put(1234,"新来的");
map.put(4321,"新来的");
map.put(4321,"新同学");
//遍历
//得到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 学生3
4000 学生4
1234 新来的
5000 学生5
6000 学生6
7000 学生7
8000 学生8
9000 学生9
4321 新同学
从运行结果来看,映射的元素也是不可重复的如果加入相同的键值对时,则会替换掉原来的键值对。总结来说,映射的特点是:一个K对应一个V,K是一个set集合,是不可重复的,无序的,如果加入相同K的键值对时,则会替换原来的键值对。
以上三种集合框架的应用是很广的,比如对一个整型数组进行去重复排序,就可以用Set对数组去重复,然后在用其他排序方法对去重复的数组进行排序。要统计一个数组中的相同元素的个数,就可以用Map对数组进行操作,返回数组元素及其出现的次数。具体代码如下:
public class Test {
public static void main(String args[]){
//初始化一个数组
int[] array = {2,3,5,3,7,4,9,3,2,1,8,6,3,8,7,3,2,1,9,};
//创建Test类对象
Test ft = new Test();
int[] ar = ft.reSet(array);
for (int i=0;i System.out.print(ar[i]+"\t"); } java.util.HashMap ft.print(map); } /* * 去掉数组中重复的元素并排序的方法 */ public int[] reSet(int[] arr) { // 创建HashSet的对象 java.util.HashSet // 遍历数组,将数组中的元素加到HashSet中 for (int i = 0; i < arr.length; i++) { // 将数组的元素添加到集合中 set.add(arr[i]); } // 再将集合中的元素保存回数组中 // 实例化一个数组 int[] temps = new int[set.size()]; // 得到迭代器对象 java.util.Iterator int k=0; while (ter.hasNext()) { temps[k] = ter.next(); k++; } // 冒泡排序 for (int i = 0; i < temps.length; i++) { for (int j = i + 1; j < temps.length; j++) { if (temps[i] > temps[j]) { int temp = temps[i]; temps[i] = temps[j]; temps[j] = temp; } } } return temps; } /* * 返回数组中相同元素的个数的方法 */ public java.util.HashMap //创建映射对象 java.util.HashMap int[] key = reSet(arr); //实例化一个数组 int[] value = new int[key.length]; for (int i=0;i for (int j=0;j if (key[i]==arr[j]){ value[i]++; } } } for (int i=0;i map.put(key[i], value[i]); } return map; } //打印映射的方法 public void print(java.util.HashMap //遍历 //得到K的set集合 java.util.Set //遍历K的集合,得到K的迭代器对象 java.util.Iterator