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;
}
}
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,加到映射中。
<!--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-->
分享到:
相关推荐
Java集合框架是一个抽象数据类型的框架,它提供了一组接口和类,可用于处理各种类型的数据结构,如列表、队列、集、映射等。 Java集合框架的主要特点是: 1、可扩展性:Java集合框架提供了一组可扩展的接口和类,可...
FASTUTIL是特定类型Java的集合。
笔记: 集合接口、 集合实现(链表、数组列表、散列集、树集、队列与双端队列、映射表)、 集合与数组之间的转换、 算法(排序、二分查找)。
Queue体系集合,代表一种队列集合实现。 Java集合就像是一个容器,我们可以把多个对象(实际上是对象的引用,习惯上叫对象,)保存到集合容器中。在JDK1.5以前Java集合会丢失容器中所有对象的数据类型,把所有对象...
MAPB结合了嵌入式数据库引擎和Java集合。
进阶篇主要介绍线性表、栈、队列、集合 、映射表、排序、二叉查找树、AVL树、散列、图及及其应用、并行程序设计、网络、Java数据库程序设计以及JSF等内容。 本书可作为高等院校相关专业程序设计课程的基础教材,也可...
集合框架是一个统一的架构,负责保存、装载数据,因此结合类也称容器类,集合框架主要由接口、抽象类和实现类构成。JAVA结合框架可以分为set、list、map、queue四大体系,其中set代表无序不可...queue代表队列集合。
欢迎使用fastutil 是特定于类型的Java类的集合,这些类通过提供若干个容器(例如,映射,集合,列表和属性队列)来实现Java.util包的接口,从而扩展了Java Collections Framework; 它还为二进制文件和文本文件提供...
常用集合 数组列表/向量 链表 哈希映射 哈希集 链接哈希映射 Java多线程 多线程中的常见问题 同步关键字原理 多线程的三大核心 对锁的一些认知 ReentrantLock实现原理 ConcurrentHashMap 的实现原理 如何优雅地使用...
JGL包括相互链接起来的列表、设置、队列、映射、堆栈、序列以及反复器,它们的功能比Enumeration(枚举)强多了。同时提供了一套完整的算法,如检索和排序等。在某些方面,ObjectSpace的设计也显得比Sun的库设计方案...
复杂度 时间复杂度 空间复杂度 ...集合(TreeSet)、映射(TreeMap) 哈夫曼树 Trie 线性+树形数据结构 集合(HashSet) 映射(HashMap、LinkedHashMap) 二叉堆(BinaryHeap) 优先级队列(PriorityQueue)
本书首先介绍了Java中需要特别掌握的部分,然后讨论了程序设计中类、继承、多态性、递归和复杂度分析等概念,最后还介绍了线程和同步技术。 目录: 第一章类与对象 第二章类之间的关系 第三章类的设计 第四章算法...
LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...
LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...
④集合部分 2、 Java 高级知识 ①线程 ②锁 ③JDK ④反射 ⑤JVM ⑥GC ⑦ IO 和 NIO, AIO 二、 JavaEE 部分 1、 Spring ①IoC 与 Bean 配置、 管理 ②AOP 与事务、 权限控制 ③S2SH 整合开发 ④Spring, JPA 整合 2...
《Java 7并发编程实战手册》是Java 7并发编程的实战指南,介绍了Java 7并发API中大部分重要而有用的机制。全书分为9章,涵盖了线程管理、线程同步、线程执行器、Fork/Join框架、并发集合、定制并发类、测试并发应用...
受Java启发java.util.Collection 功能性糖(映射,过滤,缩小,...) 安装 通过作曲家安装: composer require phootwork/collection 文献资料 运行测试 该软件包是Phootwork库的一部分。 为了运行测试套件,您...