`
xichao1929
  • 浏览: 40226 次
  • 性别: 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集合与映射(牛)

    ### Java集合与映射详解 #### 一、Java集合框架概览 在Java编程语言中,集合框架(Collection Framework)是一组接口和实现这些接口的类的集合,它提供了存储和操作一组对象的方式。Java集合框架主要包括两种类型...

    java中关于集合的操作

    在Java编程语言中,集合框架是处理对象组的重要工具,它提供了一种高效、灵活的方式来存储和操作数据。本文将深入探讨Java中的集合操作,并结合PPT(虽然这里没有提供具体的PPT内容,但通常这样的资源会包含示例、...

    JAVA中的集合和js中集合

    ### JAVA与JS中的集合概述 在现代编程语言中,集合框架是处理数据的重要工具之一,尤其是在面向对象的语言中,如Java。本文将详细介绍Java中的集合系统,并简要提及JavaScript中的集合概念,帮助读者理解这两种语言...

    java集合类线程安全.doc

    本文将结合上述 Bloch 关于线程安全等级的定义,对 Java 集合框架中的集合类进行线程安全性分析,并指出各个集合类在现实的编程环境中需要注意的并发编程的陷阱;同时对集合框架中通用算法对线程安全性的影响进行...

    java中集合容器的详细介绍

    Java中的集合框架是Java编程语言中的一个重要组成部分,它提供了一种高效、灵活的方式来存储和操作对象。集合框架的核心是各种接口和类,它们定义了不同的数据结构,如列表(List)、队列(Queue)、集(Set)和映射(Map)...

    java资料各种集合

    Java集合框架是Java编程语言中不可或缺的一部分,它为开发者提供了数据结构和算法的实现,使得在处理对象集合时更加高效和便捷。在这个“java资料各种集合”中,我们可以期待找到关于Java集合框架的各种深入讲解和...

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

    这个开源项目提供了一套全面的特定类型的数据结构,包括映射(Maps)、集合(Sets)、列表(Lists)和队列(Queues),以及其他一些数据结构如堆(Heaps)和双端队列(Deques)。它不仅覆盖了基本类型,如int、long...

    java中的集合共14页.pdf.zip

    Java中的集合框架是Java编程语言的核心组成部分之一,它为存储、管理和操作对象提供了一套高效且灵活的工具。本资料“java中的集合共14页.pdf”可能详细讲解了Java集合框架的基础概念、主要类和接口,以及它们的常用...

    java基本集合类,java基本集合类

    Java集合框架是Java编程语言中的一个重要组成部分,它提供了多种数据结构,如列表、队列、集、映射等,方便程序员存储和管理对象。本篇文章将详细讲解Java中的基本集合类ArrayList、LinkedList和Vector,以及HashSet...

    java中的集合笔记.rar

    Java中的集合框架是Java编程语言的核心组成部分之一,它为存储、管理和操作对象提供了一组统一的接口和类。集合框架主要包括List、Set、Queue和Map四大接口,以及一系列实现这些接口的类,如ArrayList、LinkedList、...

    Java多线程安全集合

    在Java编程中,多线程安全集合是程序员在并发环境下处理数据共享时必须考虑的关键概念。这些集合确保了在多个线程访问时的数据一致性、完整性和安全性,避免了竞态条件、死锁和其他并发问题。Java提供了一系列的线程...

    一个讲解很清晰的Java集合框架PPT

    而WeakHashMap则使用弱引用作为键,当键不再被引用时,键值对会自动从映射中移除。 PPT可能涵盖了这些接口的详细特性,包括它们的实现类、操作方法、性能分析,以及如何根据实际需求选择合适的集合类型。此外,还...

    java集合类学习笔记.doc

    Java集合框架是Java编程中不可或缺的一部分,它提供了一系列强大的容器类,帮助开发者有效地组织和管理数据。通过深入了解集合框架的设计理念、数学背景及其接口层次结构,开发者可以更好地选择合适的容器来解决实际...

    java集合资料整理

    - `containsKey(Object key)`:判断映射中是否包含指定键的映射关系。 #### 四、迭代器`Iterator`接口 `Iterator`接口用于遍历`Collection`接口的实现类中的元素,并提供安全地从`Collection`中移除元素的能力: ...

    java集合,java集合

    以上只是Java集合框架的一部分核心概念,实际开发中还有许多其他类和接口,如Deque(双端队列)、NavigableSet(可导航的集合)等,都为开发者提供了丰富的选择和强大的功能。理解和熟练使用Java集合框架,是成为一...

    java的集合帮助文档

    Java集合框架是Java编程语言中的一个核心特性,它为存储、管理和操作对象提供了一组统一的接口和类。集合框架的使用极大地提高了代码的可读性、可维护性和效率。以下是对Java集合学习的一些关键知识点的详细解释: ...

    java集合类总结

    Java集合框架是Java编程语言中一个非常核心的部分,它提供了数据结构和算法的抽象,使得开发者可以方便地存储和管理对象。在Java中,集合主要分为两大类:Collection和Map。本文将对Java集合框架中的Collection接口...

    Java集合框架培训资料

    8. **流(Stream)API**:从Java 8开始,引入了流API,它提供了函数式编程风格处理集合的新方式,如过滤、映射和收集操作。 9. **比较器与排序**:集合框架中的`Comparator`接口用于自定义比较逻辑,`Collections....

    java并发集合

    在Java编程中,"java并发集合"是一个关键领域,它涉及到多线程环境下如何有效地管理和操作数据集合。Java提供了一系列的并发集合类,使得在并发环境中实现高效且线程安全的数据处理成为可能。这些集合主要存在于`...

Global site tag (gtag.js) - Google Analytics