• Java集合类


    网上搜索了Java集合类相关的知识点,将明白的一些摘录以下,对现有的集合类有个大概的了解,重要的是开发遇到问题时能及时解决。

    集合类存放于java.util包中。
    集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象
    就是指集合中对象的引用(reference)。
    集合类型主要有3种:set(集)、list(列表)和map(映射)。
    (1)集
    集(set)是最简单的一种集合,它的对象不按特定方式排序,只是简单的把对象加入集合
    中,就像往口袋里放东西。
    对集中成员的访问和操作是通过集中对象的引用进行的,所以集中不能有重复对象。
    集也有多种变体,可以实现排序等功能,如TreeSet,它把对象添加到集中的操作将变为按
    照某种比较规则将其插入到有序的对象序列中。它实现的是SortedSet接口,也就是加入了
    对象比较的方法。通过对集中的对象迭代,我们可以得到一个升序的对象集合。
    (2)列表
    列表的主要特征是其对象以线性方式存储,没有特定顺序,只有一个开头和一个结尾,当
    然,它与根本没有顺序的集是不同的。
    列表在数据结构中分别表现为:数组和向量、链表、堆栈、队列。
    关于实现列表的集合类,是我们日常工作中经常用到的,将在后边的笔记详细介绍。
    (3)映射
    映射与集或列表有明显区别,映射中每个项都是成对的。映射中存储的每个对象都有一个
    相关的关键字(Key)对象,关键字决定了对象在映射中的存储位置,检索对象时必须提供
    相应的关键字,就像在字典中查单词一样。关键字应该是唯一的。
    关键字本身并不能决定对象的存储位置,它需要对过一种散列(hashing)技术来处理,产生
    一个被称作散列码(hash code)的整数值,
    散列码通常用作一个偏置量,该偏置量是相对于分配给映射的内存区域起始位置的,由此
    确定关键字/对象对的存储位置。理想情况下,散列处理应该产生给定范围内均匀分布的值
    ,而且每个关键字应得到不同的散列码。
    Collection 
    --List:-----------------------以特定次序存储元素。所以取出来的顺序可能和放入顺序不同。 
          ---ArrayList 
          ---LinkedList 
          ---Vector 
    --Set :----------------------- 不含有重复的元素 
          --- HashSet 
          --- TreeSet 
    Map 
          ---HashMap 
          ---HashTable 
          ---TreeMap 
    补充: 
       List,Set,Map将存入的数据一律视为Object类型。 
       Collection、List、Set、Map都是接口,不能实例化。继承自它们的 ArrayList, Vector, HashTable,HashMap是具象class,这些才可被实例化。 
    实现了Collection接口的子类都有一个iterator()方法,通过调用该方法可以返回Iterator类型的一个对象,使用该对象即可取出所要的值。代码如下: 
       Iterator it=c.iterator() 
       String s = (String)it.next(); 
    这只是取出其中的一条数据,要想把所有的都取出来,可以用循环 
          for(Iterator it=c.iterator();it.hasNext();){ 
                 String s = (String)it.next(); 
          } 
    实现了Collection接口的子类都可以用类似上述的方法存取数据。 
    HashMap 
       HashMap不同于Collection,它的对象没有iterator()方法,但它有一个values()方法,调用此方法后返回的是Collection对象,通过返回的对象可调用iterator()方法,从而实现取数据。
     取数据的两种方法 
          第一种 
                    Iterator itt = hm1.values().iterator(); 
                    book bkex = (book) itt.next(); 
                    取出的是第一条记录,在此注意的是后存的先取[至于为什么我也说不清楚] 
          第二种 
                book tempbook =(book)hm1.get("book3"); 
                这样可以直接根据名字取出对应的记录。
    所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个Collection参 
    数的构造函数用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个 
    Collection。  
      如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使 
    用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:  
        Iterator   it   =   collection.iterator();   //   获得一个迭代子  
        while(it.hasNext())   {  
          Object   obj   =   it.next();   //   得到下一个元素  
        }  
      由Collection接口派生的两个接口是List和Set。 
    Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。 
    Collection是个java.util下的接口,它是各种集合结构的父接口。 
    List, Set, Map是否继承自Collection接口? List,Set是 Map不是 
    ArrayList和Vector的区别。 
    一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的 
    二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半 
    HashMap和Hashtable的区别 
    一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现 
    二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的 
    三.值:只有HashMap可以让你将空值作为一个表的条目的key或value 
  • 相关阅读:
    body background bottom在firefox下的bug
    性能测试(并发负载压力)测试分析-简要篇 (转载)
    concurrent group
    分析性能数据(转载)
    关于并发测试的思考--交流贴
    Watir 试用手记——一个很不错的开源 Web 自动化测试框架(转)
    lr中winsock协议的脚本(转载51testing)
    英语常用问句(转)
    安装rpc的问题
    调整压力测试工具(转)--非常不错的文章
  • 原文地址:https://www.cnblogs.com/doit8791/p/3444680.html
Copyright © 2020-2023  润新知