java中的 队列 集合 映射
?????????????????? java中的队列? 集合? 映射
从计算机的角度看,数据是所有能被输入到计算机中的,且能被计算机处理的符号的集合。它是计算机操作对象的统称。数据结构是指数据与数据之间的联系,可以看做是数据与数据之间存在某种关系的集合,数据结构包括一下几个方面:
(1):数据元素之间的逻辑关系,即数据的逻辑结构。
(2):数据元素在计算机中的存储方式,即数据的存储结构。
(3):施加在数据上的任何操作,在计算机中我们统称为运算(即数据的运算)(数据的运算包括:检索,插入,删除,更新,排序等)。
我们现在讲的队列,集合,映射是数据的常用的简单的存储结构。
1队列 (以ArrayList为例):它的特点是:线性的,有序的,长度可变的,有下表,可重复存放元素。画图板的保存可以用队列。有三种遍历方式。它的常用的方法add(添加元素),size(列表的长度)、isEmpty(判断是否为空)、get(有下表得到元素)、set(替换某位置上的元素(两个参数))、iterator (迭代器)和 contains(是否包含某个元素)。
2集合 (以HashSet为例):它的特点是;无序的,长度可变的,不可重复,无下表。由于他的不可重复性我们可以去掉某一队列中重复的元素。有两种遍历方式。他的常用方法add(添加元素),size(列表的长度)、isEmpty(判断是否为空),iterator (迭代器)contains(是否包含某个元素)。
例题:我们要将一个无序数组,去掉重复的元素后,排序。
思路:我们创建一个集合,然后我们把数组的元素放入到集合中,然后在取出集合中的元素,放入到一个数组,此时数组即为无重复的数组。然后再排序。
代码:
?3 映射(以HashMap为例):它的特点是:首先是一个K <--->V ,K是一个Set集合(不可重复,无序的),每一个K都对应一个K,如果加入相同的键值时,则会替换已经存在的键值队。
containsKey
(Object key)
判断该映射是否包含对应的键值。containsValue(Object value) 判断该映射是否包含 由键 映射得到的值。get(Object key)
??返回该值(由键 映射得到的值
)。isEmpty
()
判断是否为空,
put
(K key, V value)
加入一对键值。size()键值的对数。场景:在学校中一个学号对应一个学生及他的相关信息,在一个国家中一个身份证对应一个公民及他的相关信息。
?
例题:统计一个数组中每一个元素的次数。
思路:遍历数组,对他的每一个元素我们用 映射的containsKey(Object key),如果存在该元素我们? 取出该元素在映射的值 并加以放到映射中,如果不存在我们将? value? 赋值1,加到映射中。???
?
? 代码:
? 1 楼 walkingman_c 2011-07-25 very good. but there is a not-so-important bug in the code .
for(int i=0;i<a.length;i++){
if(map.containsKey(a[i])){
[code="java]int v=map.get(a[1])+1; "
map.put(a[i], v);
}else{
map.put(a[i],1);
}
it should be i not 1. 2 楼 walkingman_c 2011-07-25 very good. but there is a not-so-important bug in the code .
for(int i=0;i<a.length;i++){
if(map.containsKey(a[i])){
int v=map.get(a[1])+1;
map.put(a[i], v);
}else{
map.put(a[i],1);
}
it should be i not 1. 3 楼 xichao1929 2011-07-26 for(int i=0;i<a.length;i++){
if(map.containsKey(a[i])){
[code="java]int v=map.get(a[i])+1; "
map.put(a[i], v);
}else{
map.put(a[i],1);
}
是这样吧!!