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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ycbin 初级黑马   /  2017-12-4 19:04  /  3696 人查看  /  38 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

集合小总结:
1、集合体系:
集合:单列集合(Collection
                                   List: 有索引,可以重复,存取有序
                    ArrayList:底层是数组
                                       LinkedList:底层是链表
                              Set: 没有索引,元素唯一,存储无序
                                  HashSet:元素唯一,存储无序
                                                       LinkedHashSet元素唯一,存取有序
          双列集合(Map<K,V>
HashMap:键唯一,值任意,存储无序
LinkedHashMap:键唯一,值任意,存储有序
Hashtable:键与值可以为Null
Properties:键与值都是String类型,一般与IO结合使用
2、集合中的方法:
   2.1单列集合:
            2.1.1 Collection接口
                  boolean add(Object e) 添加元素
                 int size()                       获取集合的长度
                            void clear()          清空元素
                            boolean contains(Object o) 判断集合中是否包含指定的元素
                            boolean isEmpty()      判断集合是否为空
                            boolean remove(Object o)        删除指定的元素
                            Object[] toArray()       将集合转换成Object类型的数组
<T> T[] toArray(T[] a)  将集合转换成指定类型的数组
                            Iterator iterator() 获取迭代器对象
             2.1.1.1List接口
                  void add(int index, Eelement)  在指定位置上添加指定的元素
                            E get(int index)   获取指定位置的元素
                            E remove(int index)    删除指定位置的元素
                            E set(int index, E element)         修改指定位置的元素
                            ListIterator<E> listIterator()获取列表迭代器(解决并发修改异常)
            2.1.1.1.1 ArrayList实现类的方法参考List接口方法
            2.1.1.1.2 LinkedList实现类
void addFirst(E e)  在最前面添加元素
                           void addLast(E e) 在最后面添加元素
                            E getFirst()       获取第一个元素
                            E getLast()       获取最后一个元素
                           E removeFirst() 删除第一个元素
                            E removeLast()   删除最后一个元素
        2.1.2 Set接口、HashSet 实现类、LinkedHashSet实现类的方法使用参考Collection接口方法即可。
2.2双列集合:
        2.2.1       Map常用功能
        V put(K key, V value) :以键=值的方式存入Map集合
        V get(Object key):根据键获取值
int size():返回Map中键值对的个数
        booleancontainsKey(Object key):判断Map集合中是否包含键为key的键值对
        boolean containsValue(Object value):判断Map集合中是否包含值为value键值对
boolean isEmpty():判断Map集合中是否没有任何键值对
        void clear():清空Map集合中所有的键值对
        Vremove(Object key):根据键值删除Map中键值对
        Set<Map.Entry<K,V>> entrySet():将每个键值对封装到一个个Entry对象中,再把所有Entry的对象封装到Set集合中返回
        Set<K>keySet() :Map中所有的键装到Set集合中返回
        Collection<V>values():返回集合中所有的value的值的集合
         2.2.1.1 HashMapLinkedHashMap参考Map接口即可
   2.2.2Hashtable的实现类Properties
与IO流结合的特有方法(对配置文件的读与写):
void list(PrintStream out) 将属性列表输出到指定的输出流(不常用)。
void list(PrintWriter out)  将属性列表输出到指定的输出流(不常用)。
void load(InputStreaminStream) 从输入流中读取属性列表。
void load(Reader reader)从输入字符流中读取属性列表
void store(OutputStream out, String comments)将此 Properties表中的属性列表写入输出流。
void store(Writer writer, String comments)将此 Properties表中的属性列表写入输出字符。
ObjectsetProperty(String key, String value)  调用 Hashtable 的方法 put。
String getProperty(Stringkey) 用指定的键在此属性列表中搜索属性。
Set<String>stringPropertyNames()  返回此属性列表中的键集
3.集合的遍历
  3.1单列集合:
          List:转数组,普通for ,增强for,迭代器
          Set: 转数组,增强for,迭代器
  3.2 双列集合:一、获取所有的key,通过key来获取value
Set<String> keys = hm.keySet();
                  for (Stringkey : keys) {
                          Stringvalue = hm.get(key);
                          System.out.println(key+ "=" + value);
                  }
                二、获取所有的结婚证对象,然后通过结婚证对象获取丈夫和媳妇
                   Set<Map.Entry<String,String>> entrys = hm.entrySet();
                               for (Map.Entry<String,String> entry : entrys) {
                                         String key = entry.getKey();
                                         String value = entry.getValue();
                                         System.out.println(key +"=" + value);
                               }

38 个回复

倒序浏览
写的真不错,大气上档次,内容涵盖的非常全面,我对此贴主的敬仰有如滔滔江水连绵不绝.
点赞,么么哒.
回复 使用道具 举报
总结挺详细   不够我好像忘了一些   
回复 使用道具 举报
vector哭了
回复 使用道具 举报
Properties是一对一  xml是一对多。。 目的都是用于存储  
回复 使用道具 举报
使用迭代器进行遍历时 如果需要调用两次集合中的变量时,应该将此变量赋值给另一个变量,而不是使用两次.next
回复 使用道具 举报
王宇航 发表于 2017-12-5 11:03
使用迭代器进行遍历时 如果需要调用两次集合中的变量时,应该将此变量赋值给另一个变量,而不是使用两次.ne ...

你是想说指针问题吗?还是什么意思/
回复 使用道具 举报
感谢你让我回顾了一起的知识   要不是这样我都快忘掉了;
回复 使用道具 举报
pyx0812 来自手机 初级黑马 2017-12-5 13:19:05
9#
Hashtable感觉完全没有印象了,就知道有这么个东西,还是欠练啊
回复 使用道具 举报
总结的灰常好,脉络清晰,面面俱到(手动点赞).
谢谢分享!
回复 使用道具 举报
学员123 来自手机 初级黑马 2017-12-5 15:12:17
11#
写的很多 内容很全
回复 使用道具 举报
学员123 来自手机 初级黑马 2017-12-5 15:13:04
12#
内容详细 值得鼓励 我要向你 努力学习
回复 使用道具 举报
Lee0 初级黑马 2017-12-5 18:53:23
13#
Hashtable的键与值不能为null
Hashmap的键和值可以为null
回复 使用道具 举报
清晰简洁 一阵见血 写的很通俗,一看就懂 ,很容易理解 ,受益不浅
回复 使用道具 举报
ArrayList查询快,增删慢。线程不安全,效率高。LinkedList查询慢,增删快。线程不安全,效率高。Vector底层数据结构是数组,查询快,增删慢。线程安全,效率低。
回复 使用道具 举报
总结的真好,值得学习
回复 使用道具 举报
小鹿哥 来自手机 初级黑马 2017-12-5 21:46:44
17#
补充:HashMap可以有空键值对
回复 使用道具 举报
对集合的总结比较详细,常用的都概述到了,很好
回复 使用道具 举报
不错不错,非常受用!
回复 使用道具 举报
看着对自己很有帮助
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马