zoukankan      html  css  js  c++  java
  • 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 
  • 相关阅读:
    SharePoint 2013 中的SQL Server 安全
    SharePoint 2013 的HTML5特性之响应式布局
    SharePoint 2013 一些小技巧
    SharePoint 2013 排错之"Code blocks are not allowed in this file"
    SharePoint 2013 创建搜索中心及搜索设置
    SharePoint 2013 使用PowerShell创建State Service
    SharePoint 2013 内容部署功能简介
    SharePoint 使用PowerShell恢复误删的网站集
    SharePoint 自定义WebPart之间的连接
    linux之misc及使用misc创建字符设备
  • 原文地址:https://www.cnblogs.com/doit8791/p/3444680.html
Copyright © 2011-2022 走看看