A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ❦_H_t 中级黑马   /  2013-12-13 17:54  /  1179 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ❦_H_t 于 2013-12-14 09:23 编辑

额,本人的问题有点多,在这里一条一条慢慢列出来,求各位指点
1.集合框架是容器这我知道,但是在什么情况才用这个容器呢?
2.Set、List、Map的关系与区别是什么?(我只知道list和set是collection的子接口,list可以重复,set不可以重复,可是这不是我想知道的答案,我想知道,他们的本质到底是哪里不同)
3.Map中的键和值的作用是什么呢?
4.在Map中,为什么一定要ketSet或Entry才能遍历出内容呢?

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

3 个回复

倒序浏览
Collection
  List
      ArrayList:底层实现是数组,可以有重复的元素,查询快,增删慢,arraylist本身不具备比较性,所以想要排序,要使用collections.sort()方法来实现,
      LinkedList:底层实现是链表,可以有重复的元素,查询慢,增删快,arraylist本身不具备比较性,所以想要排序,要使用collections.sort()方法来实现  
  Set
      HashSet:底层是哈希表结构,不能有重复的元素,判断重复的依据是,hashCode,equals方法,先判断hashCode如果相等,才会去比较equals,返回的是boolean型
      TreeSet:底层是二叉树结构,不能有重复的元素,排序有两种方式,一种是让元素具备比较性,实现comparable中的comparto,返回类型是int 0 1 -1(0,正数,负数),第二种方式是让集合本身具备比较性,写一个类实现comparator中的compare方法,返回int 0 1 -1(0,正数,负数)
Map
Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。jdk1.0.效率低。
HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。将hashtable替代,jdk1.2.效率高。
TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。
Set底层就是使用了Map集合
Map没有迭代器所以要用到Collection里的迭代器,ketSet返回的是set集合,里面的元素是Map集合里面的key,就可以用set集合的迭代器,根据key遍历出所对应的值

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
1. 集合框架是java实现特定数据结构的容器,这些容器的方法可以完成对数据结构的操作。任何需要实现复杂数据结构的场合都可能会用到类集框架。小程序对资源开销和运行时间要求不大,所以这些容器不能提高性能,反而使得代码更复杂。大概复杂软件的开发就会用到这些容器了吧。2. 可以看一下http://jianshi-dlw.iteye.com/blog/1179834。
3. Map中存储的是映射,键相当于索引,值相当于索引对应的内容。至于作用,hashCode方法可以利用键直接计算出对应内容的地址值,这样查找起来是常数级时间复杂度,远快于其他数据结构的查找时间。
4. Map使用Set实现的,而Set是无法用索引遍历的,因为Set元素在内存中的地址是不连续的,由它们的hashcode决定。



评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
1.什么是集合
        集合是一种容器, 长度可变, 可以存储任意类型的对象.
        基本数据类型也可以装入集合, 但其实内部是先自动装箱成包装类对象, 然后再存入集合的
2.集合的分类
Collection                 一次存一个对象, 单列集合
        List                 可重复, 有索引
                ArrayList                数组实现, 查找快
                LinkedList                链表实现, 增删快
                Vector                数组实现, 线程安全
        Set                                  不可重复, 没索引
                HashSet                使用哈希算法去重复, 效率高, 但元素无序
                TreeSet                TreeSet是用排序的, 可以指定一个顺序, 对象存入之后会按照指定的顺序排列
                LinkedHashSet        HashSet的子类, 原理相同, 除了去重复之外还能保留存储顺序
3.        Map集合一次存储两个对象, 一个键对象, 一个值对象
        键对象在集合中是唯一的, 可以通过键来查找值
        键对象就是你要存储的数据,具体的作用是根据你存储的不同数据有同的作用,比如你要做一个人员通讯录,那么键值对就是用来查看联系方式的。
4.Map没有迭代器
那么如何遍历map集合呢?
就需要通过keySet命令,返回一个Set集合,这个集合里保存了所有的key。并定义一个entryset来接收这个集合。又因为在map集合中key和value是成对出现的,所以拿到key就可以拿到value,通过entry中的命令来遍历map集合

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马