`
甘艳丽
  • 浏览: 52121 次
  • 性别: Icon_minigender_2
  • 来自: 湖南
社区版块
存档分类
最新评论

集合框架的总结

阅读更多
集合,队列,映射三者的用法及区别
集合,队列,映射三者都是一种容器,都是可以用来存取东西的,但是三者有不同的区别。
1.集合(Set)
集合中的对象是无序的,不可重复的,集合是一个接口定义,不能创建对象,只能通过它的子类去创建,它常用的子类有HashSet和TreeSet。无序是指:当你往集合中添加对象时没有特定的方式,就像往口袋里面放东西一样,口袋里的东西是杂乱的,没有特定的顺序,所以当你要取集合中的元素时,只能通过迭代器(Iterator)去取,不能像队列一样,通过下标去取,不可重复是指:集合中的对象不能相同。这一点可通过下面的程序证明:
import java.util.HashSet;

public class HashSetTest {


public static void main(String[] args){

//创建集合容器
HashSet<Integer> set  =new HashSet<Integer>();

for(int i=0;i<10;i++){
int t = i*10;

set.add(t);//往集合中放对象
}
set.add(10);//再往集合中加入与集合中相同的对象
//遍历
//得到迭代器
java.util.Iterator<Integer> iter = set.iterator();
while(iter.hasNext()){
int t = iter.next();
System.out.println(t);
}
}
}
程序输出时只输出一个10,也就是说,程序中如果有相同的对象,它也只输出一个对象,即,不能有相同的对象。集合还有一个特点,当用迭代器取集合中的元素时,它的顺序是不一定的,它不会根据你存放时的顺序,输出相同的顺序。当你遇到要将不可重复的数字进行排序的题目时,可用集合。因为它本身就有这个去掉重复对象的功能,我们直接可以通过创建它的对象,然后往它里面添加就可以了,就不需要我们自己写方法去筛选。这样就会方便多了。
2.队列(List)
前面我们已经自己写过自定义队列,对队列有大致的了解,队列就是一条链,链当然有先后顺序的,所以,队列中的对象是有顺序的,而且队列中的对象可以相同,队列中的对象可以相同其实就是基于它是有顺序的,它可以通过下标去取对象。队列也是一个接口的定义,它也不能创建对象,只能通过子类去创建,它常用的子类有ArrayList和LinkedList.而且队列有起点和终点。当你去取队列中的对象时,它会根据先放先取的原则,第一个先放,取出的就是第一个。当你往队列中加对象时调用add()方法,它把这个对象加在队列的尾部。但是,还有一种队列(Quoto),它跟List有点区别,我打个比方:List和Quoto就相当于一间教室,然后,n个有先后顺序人就相当于它们中的对象,List的用法是,它可以允许n个人同时进入教室,但Quoto不允许n个人同时进入教室,它规定,在第一个人出来之前,教室的门是关着的,也就是说,后一个人必须在前面一个人出来之后才能进入到教室中。还有点不同就是:List遵循的是先放先取的原则,但,Quoto遵循的是先放后取的原则。队列中的对象不仅可以通过迭代器(Iterator)去取,而且可通过下标去取。如果遇到在某个特定的位置插入元素,或者根据位置获取对象等等,凡是牵扯到顺序的,都可以用队列。
3.映射(Map)
在我们现实生活中常常看到这样一种集合,身份证号与个人,IP地址与主机等,这样一种一一对应的关系就是映射。映射也是一种接口,它也不能创建对象,只能通过它的子类创建对象,它常有的子类有HashMap和Hashtable.Map中存放的是两种对象,一种称为key(键),一种称为value(值),它们两是一一对应关系,在Map中,key值不能重复,但value的值可以重复,就像身份证号与个人一样,人的名字可以相同,但是身份证号却不能相同。向Set和List中添加对象时,都是通过调用add()方法,而在Map中,是通过put(K,V)方法向其加入对象的。而且取对象时也是通过迭代器。不过它取对象时比前两种复杂,它首先要得到key的set集合,然后通过调用get(key)的方法,得到value值,然后在取出。今天做题目时,明显就体会到了HashMap的方便性,我们今天做的题目是:首先定义一个一维数组,一维数组的值已经给定了,要求我们统计一维数组中相同元素的个数,我用的是比较原始的方法,通过for循环比较,若相同,则计数器+1,写的比较繁琐。大家在看下这个程序,是通过用到HashMap里的方法做的。
          Public static HashMap<Integer,Integer> count(int [] array){

HashMap<Integer,Integer> map=new HashMap<Integer,Integer>();//创建一个HashMap得对象,用来放数字以及该数字出现的次数
for(int i=0;i<array.length;i++){
int number=array[i];
if(map.containsKey(number)){//如果map里面包含number键
int value=map.get(number);//就可以通过get函数得到number对应的value的值
value++;//使次数加1
map.put(number, value);
}
else{//如果map里面不包含number键
map.put(number, 1);//number的次数只有一次
}
}
return map;
}
我觉得这个方法比我先前写的那个方法有水平多了,当遇到像这种统计相同元素的个数时可以用HashMap方法,这样会给我们带来很多方便。
分享到:
评论
1 楼 fenger_chui 2011-08-20  
学习了。。。。

相关推荐

    Java集合框架总结

    ### Java集合框架总结 #### 一、Java集合框架概述 Java集合框架是Java标准库的一部分,它提供了一系列的接口和类来存储和操作各种类型的对象集合。这些接口和类遵循一致的设计模式,使得开发人员可以方便地管理和...

    集合框架总结图

    通过深入学习和理解这个集合框架总结图,开发者能够更好地掌握Java集合框架的核心原理,提高代码质量和效率,解决各种数据管理问题。无论是在面试准备还是实际项目开发中,这都是一份不可或缺的参考资料。

    java集合框架总结

    ### Java集合框架总结 在Java编程中,集合框架(Collections Framework)是处理数据的重要工具集,它提供了一系列接口和类来存储、操作和检索不同类型的元素。本文将深入解析Java集合框架的关键知识点,涵盖其核心...

    JAVA集合框架学习总结

    本文档为本人学习 java 集合框架期间的学习总结笔记,希望对新学习的朋友有所帮助和参考价值。本人java 开发时间不是太长,可能存在不完善或不对之处,欢迎指正!

    Collection集合框架总结以及遍历方法

    总结集合框架需要实现哪些方法,以及集合的遍历方法JDK8.0以下的遍历方法

    集合框架总结

    本人总结的java高级集合框架知识点汇总,在使用Java的时候,我们都会遇到使用集合(Collection)的时候,但是Java API提供了多种集合的实现,我在使用和面试的时候频频遇到这样的“抉择” 。 :)(主要还是面试的...

    Java集合框架使用总结

    ### Java集合框架使用总结 #### 前言 本文旨在为读者提供关于Java集合框架的概览性介绍,帮助理解其整体架构与设计理念。对于希望深入掌握特定接口或类使用方法的学习者,建议查阅官方提供的Java API文档。 #### ...

    集合框架大总结.xmind

    集合框架大总结.xmind

    集合框架.xmind

    超详细的集合框架总结,用法,比较,一网打尽java集合内容!超详细得集合框架知识图谱,如果你下载你会感觉超值

    Java复习之集合框架总结

    Java集合框架是Java编程语言中用于存储和管理对象的核心组件,它提供了一组高效、灵活的数据结构和操作这些数据结构的方法。本篇文章将深入探讨Java集合框架的主要概念、设计原则以及常用的集合类。 首先,为什么...

    JAVA集合框架学习思考+总结

    JAVA集合框架,java框架总结,java集合框架,java集合框架学习,java集合框架类

    集合框架的使用方法

    总结,Java集合框架为开发者提供了强大的数据管理能力。理解和熟练运用集合框架,不仅可以提升代码质量,也能在面对复杂问题时游刃有余。无论是基础的增删查改,还是高级的并发控制、性能优化,都离不开对集合框架的...

    day20(集合框架)教案.doc

    java集合框架的知识总结,内含代码讲解,知识点概括,带你更好理解java集合框架。。。。像Map集合的概念,遍历方式等

Global site tag (gtag.js) - Google Analytics