`
xichao1929
  • 浏览: 38961 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java中的 队列 集合 映射

 
阅读更多

 

java中的队列 集合 映射

从计算机的角度看,数据是所有能被输入到计算机中的,且能被计算机处理的符号的集合。它是计算机操作对象的统称。数据结构是指数据与数据之间的联系,可以看做是数据与数据之间存在某种关系的集合,数据结构包括一下几个方面:

1):数据元素之间的逻辑关系,即数据的逻辑结构。

2):数据元素在计算机中的存储方式,即数据的存储结构。

3):施加在数据上的任何操作,在计算机中我们统称为运算(即数据的运算)(数据的运算包括:检索,插入,删除,更新,排序等)。

我们现在讲的队列,集合,映射是数据的常用的简单的存储结构。

1队列 (以ArrayList为例):它的特点是:线性的,有序的,长度可变的,有下表,可重复存放元素。画图板的保存可以用队列。有三种遍历方式。它的常用的方法add(添加元素),size(列表的长度)isEmpty(判断是否为空)get(有下表得到元素)set(替换某位置上的元素(两个参数))iterator (迭代器)和 contains(是否包含某个元素)。

2集合 (以HashSet为例):它的特点是;无序的,长度可变的,不可重复,无下表。由于他的不可重复性我们可以去掉某一队列中重复的元素。有两种遍历方式。他的常用方法add(添加元素),size(列表的长度)isEmpty(判断是否为空),iterator (迭代器)contains(是否包含某个元素)。

例题:我们要将一个无序数组,去掉重复的元素后,排序。

思路:我们创建一个集合,然后我们把数组的元素放入到集合中,然后在取出集合中的元素,放入到一个数组,此时数组即为无重复的数组。然后再排序。

代码:

package netjava.txc.setjihe; 

public class MyTest { 
//定义一个数组  
int a[]=new int[10]; 
// 程序入口  
public static void main(String args[]){ 
//创建对象  
MyTest txc = new MyTest(); 
int a[]= txc.createa(21); 

for(int i=0;i<a.length;i++){ 
System.out.print(a[i]+"\t"); 
} 
int b[]=new int[a.length]; 
System.out.println(); 
b=txc.quchong(a); 
System.out.println(); 
int c[]=new int[b.length]; 
c=txc.sort(b); 
for(int i=0;i<c.length;i++){ 
System.out.print(c[i]+"\t"); 
} 
} 
public int[] createa(int len){ 

//定义一个数组  
int a[]=new int[len]; 
for(int i=0;i<a.length;i++){ 
//创建随机对象  
java.util.Random an=new java.util.Random(); 

int txc=an.nextInt(20); 
a[i]=txc; 

} 


return a; 
} 

public int [] quchong(int a[]){ 

//把数组 放入到 集合 中  
java.util.HashSet<Integer> setn=new java.util.HashSet<Integer>(); 

for(int i=0;i<a.length;i++){ 

setn.add(a[i]); 
} 

//遍历 先得到迭代器  
java.util.Iterator<Integer> iter =setn.iterator(); 
int d []=new int[setn.size()]; 
int i=0; 
while(iter.hasNext()){ 

d[i]=iter.next(); 
// System.out.print("<>"+d[i]+"\t");  

i++; 



} 

return d; 
} 

/** 
* 排序的 方法  
* @param a 要传入的 参数  
* @return 返回一个数组  
*/ 
public int[] sort(int a[]){ 
//排序 用冒泡  
for(int i=0;i<a.length;i++){ 
for(int j=i+1;j<a.length;j++){ 
if(a[i]>a[j]){ 
int temp=a[i]; 
a[i]=a[j]; 
a[j]=temp; 
} 
} 


} 
return a; 

} 


} 

 

映射(以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,加到映射中。

<!--EndFragment-->

 

Java代码  
package netjava.txc.setjihe; 

import java.util.HashMap; 

public class MinTest { 

//定义一个数组  
int a[]=new int[10]; 
// 程序入口  
public static void main(String args[]){ 
//创建对象  
MyTest txc = new MyTest(); 
int a[]= txc.createa(21); 

for(int i=0;i<a.length;i++){ 
// System.out.print(a[i]+"\t");  

} 
System.out.println(); 
//创建 对象  
MinTest min=new MinTest(); 
HashMap<Integer, Integer> map= min.time(a); 
// java.util.HashMap<Integer, Integer> maps= new java.util.HashMap<Integer, Integer>();  
//遍历  
//得到 k的集合  
java.util.Set<Integer> se= map.keySet(); 
//得到迭代器  
java.util.Iterator<Integer> iter =se.iterator(); 

while(iter.hasNext()){ 
//取出 一个 k  
int num =iter.next(); 
//取出相应的 v  
int v =map.get(num); 
System.out.println(num+"\t"+v); 
} 

} 
public int[] createa(int len){ 

//定义一个数组  
int a[]=new int[len]; 
for(int i=0;i<a.length;i++){ 
//创建随机对象  
java.util.Random an=new java.util.Random(); 

int txc=an.nextInt(20); 
a[i]=txc; 

} 



return a; 
} 


public HashMap<Integer, Integer> time(int a[]){ 

HashMap<Integer, Integer> map =new HashMap<Integer, Integer>(); 

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); 
} 



} 
return map; 
} 



} 

 

 

<!--EndFragment-->
0
0
分享到:
评论
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);  
             }  
是这样吧!!
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.
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.

相关推荐

    Java集合框架.pdf

    Java集合框架是一个抽象数据类型的框架,它提供了一组接口和类,可用于处理各种类型的数据结构,如列表、队列、集、映射等。 Java集合框架的主要特点是: 1、可扩展性:Java集合框架提供了一组可扩展的接口和类,可...

    fastutil,FASTTIL通过提供特定于类型的映射、集合、列表和队列来扩展Javaμ集合框架。.zip

    FASTUTIL是特定类型Java的集合。

    Java笔记-集合与算法

    笔记: 集合接口、 集合实现(链表、数组列表、散列集、树集、队列与双端队列、映射表)、 集合与数组之间的转换、 算法(排序、二分查找)。

    Java集合

    Queue体系集合,代表一种队列集合实现。 Java集合就像是一个容器,我们可以把多个对象(实际上是对象的引用,习惯上叫对象,)保存到集合容器中。在JDK1.5以前Java集合会丢失容器中所有对象的数据类型,把所有对象...

    mapdb,mapdb提供由磁盘存储或堆外内存支持的并发映射、集合和队列。它是一种快速、易于使用的嵌入式Java数据库引擎。.zip

    MAPB结合了嵌入式数据库引擎和Java集合。

    Java语言程序设计 进阶篇 原书第10版

    进阶篇主要介绍线性表、栈、队列、集合 、映射表、排序、二叉查找树、AVL树、散列、图及及其应用、并行程序设计、网络、Java数据库程序设计以及JSF等内容。 本书可作为高等院校相关专业程序设计课程的基础教材,也可...

    JAVA集合框架

    集合框架是一个统一的架构,负责保存、装载数据,因此结合类也称容器类,集合框架主要由接口、抽象类和实现类构成。JAVA结合框架可以分为set、list、map、queue四大体系,其中set代表无序不可...queue代表队列集合。

    fastutil:fastutil通过提供特定于类型的映射,集合,列表和队列来扩展Java:trade_mark:Collections Framework。

    欢迎使用fastutil 是特定于类型的Java类的集合,这些类通过提供若干个容器(例如,映射,集合,列表和属性队列)来实现Java.util包的接口,从而扩展了Java Collections Framework; 它还为二进制文件和文本文件提供...

    Java Core Sprout:基础、并发、算法

    常用集合 数组列表/向量 链表 哈希映射 哈希集 链接哈希映射 Java多线程 多线程中的常见问题 同步关键字原理 多线程的三大核心 对锁的一些认知 ReentrantLock实现原理 ConcurrentHashMap 的实现原理 如何优雅地使用...

    java JGL标准程序库,类似C++的STL

    JGL包括相互链接起来的列表、设置、队列、映射、堆栈、序列以及反复器,它们的功能比Enumeration(枚举)强多了。同时提供了一套完整的算法,如检索和排序等。在某些方面,ObjectSpace的设计也显得比Sun的库设计方案...

    Java超详细!Java实现数据结构PPT课件

    复杂度 时间复杂度 空间复杂度 ...集合(TreeSet)、映射(TreeMap) 哈夫曼树 Trie 线性+树形数据结构 集合(HashSet) 映射(HashMap、LinkedHashMap) 二叉堆(BinaryHeap) 优先级队列(PriorityQueue)

    Java数据结构与算法中的源代码和applet - 站长下载

    本书首先介绍了Java中需要特别掌握的部分,然后讨论了程序设计中类、继承、多态性、递归和复杂度分析等概念,最后还介绍了线程和同步技术。 目录: 第一章类与对象 第二章类之间的关系 第三章类的设计 第四章算法...

    java开源包4

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包11

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java面试题库2021.pdf

    ④集合部分 2、 Java 高级知识 ①线程 ②锁 ③JDK ④反射 ⑤JVM ⑥GC ⑦ IO 和 NIO, AIO 二、 JavaEE 部分 1、 Spring ①IoC 与 Bean 配置、 管理 ②AOP 与事务、 权限控制 ③S2SH 整合开发 ④Spring, JPA 整合 2...

    Java 7并发编程实战手册

    《Java 7并发编程实战手册》是Java 7并发编程的实战指南,介绍了Java 7并发API中大部分重要而有用的机制。全书分为9章,涵盖了线程管理、线程同步、线程执行器、Fork/Join框架、并发集合、定制并发类、测试并发应用...

    collection:[只读] PHP集合库(列表,集合,映射,队列和堆栈)

    受Java启发java.util.Collection 功能性糖(映射,过滤,缩小,...) 安装 通过作曲家安装: composer require phootwork/collection 文献资料 运行测试 该软件包是Phootwork库的一部分。 为了运行测试套件,您...

Global site tag (gtag.js) - Google Analytics