集合框架

  SortedSet接口,声明了以升序进行排序的行为。

  Queue接口,声明了队列行为,队列通常是先进先出的列表

  Deque接口,扩展了Queue接口,声明了双端队列的行为。双端队列可以像标准队列那样先进先出,也可以像堆栈那样后进先出。

  LinkedHashSet,维护组中条目的一个链表,链表中条目顺序也就是插入他们的顺序,这使得可以按照插入顺序迭代集合。

  EnumSet,专门用于枚举类型的元素。

  集合迭代器Spliterator,用于循环遍历元素序列,他支持并行迭代,即使用不到并行编程,也可以用。它讲hasNext()和next操作合并到了一个方法中,从而提高了效率。

  RandomAccess接口,通过实现这个接口,可表明集合支持高效地随机访问其中的元素。

  SortedMap接口,扩展了Map接口,确保条目以键的升序保存。

  NavigableMap接口,扩展了SortedMap,支持基于最接近匹配原则的条目检索行为,即支持检索与给定的一个或多个键最匹配的条目。

  TreeMap,该类用于创建存储在树结构中的映射,TreeMap提供了有序存储键/值对的高效手段,并支持快速检索。树映射确保元素以键的升序存储。

  

常用工具类

  StringTokenizer类,实现了Enumeration接口。解析就是将字符串分隔成一系列独立的部分,又称为标记,它们是可以表达语义含义的特定序列。它提供了解析过程的第一步,通常称为字符解析器或

扫描器。所以,给定输入字符串,就可以使用StringTokenizer枚举字符串中包含的每个标记。为了使用StringTokenizer,指定一个输入字符串和一个包含定界符的字符串。定界符

是用来分割标记的字符。定界符中的每个字符都被都被认为是有效的定界符,例如“,;:”将逗号,分号,和冒号设置为定界符。默认的定界符组由空白字符组成:空格,制表符

换页符,换行以及回车符。

  BitSet类,创建特殊类型的数组,这类数组的元素是布尔形式的位值。这类数组可以根据需要增加大小,这使得BitSet与位向量类似。

  Optional、OptionalDouble、OptionalInt和OptionalLong,为处理值可能存在、也可能不存在的场合提供了方法。避免需要频繁检查空值。

    Class Optional<T>      T指定了存储的值的类型。Optional实例既可以包含为T值,也可以为空

    Optional的基础是isPresent()和get()方法。isPresent()方法可判断是否存在值。存在返回true,否则false。get()方法取得Optional中的值。如果不包含值则抛出异常。orElse()方法将

    返回值,否则返回一个默认值。

    Optional.empty()

    Optional.of("ABCDEFG")

    OptionalDouble、OptionalInt和OptionalLong类的工作方式与Optional类十分类似,只不过他们是专门为操作double、int和long类型设计的。因此,他们分别定义了getAsDouble()、

    getAsInt()、getAsLong()方法为而不恃get()方法。

  Date类,封装了当前日期和时间。不允许获取日期或时间的单个组成部分。只能以毫秒数为单位获取日期和时间。

  Calendar抽象类提供了一套方法,允许将毫秒数形式的时间转换成大量有用的时间组成部分。

  GregorianCalendar类,是Calendar类的具体实现,实现了熟悉的Gregorian日历。这个对象使用默认地区和时区进行初始化。GregorianCalendar定义了两个域变量:AD和BC.他们

    表示格林尼治日历定义的两个纪元。

  TimeZone抽象类,可以处理与格林尼治标准时间(GMT)——也就是世界时间(UTC)之间的时差。

   SimpleTimeZone类,是TimeZone的一个便利子类。它实现了TimeZone的抽象方法,并且可以操作GreGorian日历的时区,此外还能够计算夏令营。

  Locale类,使用Locale类实例化的对象,用于描述地理或文化上的区域。使其可以编写能在不用国际环境中云运行的java程序。例如在不同的区域,用于显示日期、时间、数字

    的格式是不同的。

    Locale类的构造函数如下:

    Locale(String language)

    Locale(String language, String country)

    Locale(String language, String country, String variant)

    这些构造函数用来构建表示特定语言以及特定国家的Locale对象。这些值必须包含标准语言和国家代码,辅助信息通过variant提供。

    static void setDefault(Locale localeObj)

    这个方法将JVM使用的默认地区设置为localeObj.

    Calendar和GregorianCalendar是以地区敏感方式使用的类的例子。

  Random类,是伪随机数生成器,之所以成为伪随机数,是因为他们只是简单的均匀分布序列。

    Random()  使用相对唯一的种子

    Random(long seed) 手动指定种子

    如果使用种子初始化Random对象,就为伪随机序列定义了开始点。如果使用相同的种子初始化另外一个Ramdom对象,就会得到相同的随机序列。如果希望

    生成不同的序列,需要指定不同的种子。实现这种效果的一种方式是使用当前时间作为Random对象的种子。这种方式减少了得到重复序列的可能。

  Currency类,封装了有关货币的信息,Currency c = Currency.getInstance(Locale.US);

  Formatter类,Java能对创建格式化输出进行支持的核心在于Formatter类。该类提供了格式转换功能,从而可以采用适合的各种方式显示数字,字符串以及时间和

    日期。内容。可以让Formatter自动提供这个缓冲区,也可以在创建Formatter对象时显示提供。让Formatter将自己的缓冲区输出到文件中也是有可能的。Formatter

    对象在使用完之后应当关闭,从而释放Formatter对象占用的所有资源。

    Formatter参数中需包含个会说明符,定义显示后续参数的方法。格式说明符最以%开头。

    Formatter fmt = new Formatter();

    fmt.format("Formatting %s is easy %d %f", "with Java", 10, 98.6);

    fmt.toString();

    指定宽度:%和格式转换代码之间的整数作为最小字段宽度说明符,这会使用空格填充输出,确保输出达到特定的最小长度。即使字符串或数字长度小于宽度。

    也仍然会完整输出。默认使用空格进行填充。如果希望使用0进行填充,可以在字段宽度说明符前放一个0。%05d使用0填充总长度小于5的数字,使数字长度为5。

    指定精度:精度说明符可以应用于%f、%e、%g以及%s格式说明符。精度说明符位于最小字段宽度说明符之后。由一个小数点以及紧跟其后的整数构成。精度

    说明符的确切含义取决于所应用数据的类型。%10.4f显示的数字至少有10个字符宽,并且带有4位小数。

    对齐输出,默认情况所有输出是右对齐,如果紧随%之后放置一个减号,这样可以强制输出左对齐。%-10.2f:左对齐有两位小数点。

    +,在整数前面显示“+”符号,%+d

    当显示打的数字时,添加组分隔符通常是很有用的。fmt.format(",.2f", 4356783497.34)  : 4,356,783,497.34

    "#" 应用于%o %x %e和%f格式说明符。确保具有小数点,及时没有小数位。

    参数索引,格式说明符和参数按顺序从左向右进行匹配,使用参数索引,可以显示地控制哪个参数与哪个格式说明符相匹配。

      fmt.format("%3$d %1$d %2$d", 10, 20,30)    30 10 20

  Scanner类,与Formatter类相反,Scanner类读取格式化的输入,并将输入转换成相应的二进制。可以用于从控制台,文件,字符串或者任意实现了Readable或

    ReadableByteChanner接口的资源读取内容。

    一旦创建Scanner对象,使用它来读取格式化输入就是很简单的事情了。Scanner对象从位于低位的,创建这种对象时指定的源读取标记。标记与Scanner有关,

    是输入的一部分,根据一系列定界符确定标记的开始和结束为止。默认情况下定界符是空格。Scanner类的nextX方法进行读取,如果nextX无法找到正在查找的 类型抛出异常。

    当关闭Scanner对象时,与之关联Readable也会被关闭。

  ResourceBundle、ListResourceBundle和PropertyResourceBundle类,帮助国际化程序的类

    ResourceBundle该类定义的方法用于管理地区敏感资源的集合,例如用于显示程序中用户界面元素的字符串。可以定义两套或更多套用于支持各种语言的翻译过字符串。

    比如英语、德语等,每套翻译过的字符串都在自己的资源保中。然后可以加载适用于当前地区的资源包,并使用其中的字符串构造程序的用户界面。

    资源包通过他们的家族名称(“基名”)进行标识。对于家族名称,可以添加两字符的小写语言代码,语言代码用于指定语言。对于这种情况,如果需要的地区与语言代码

    匹配,就使用该版本的资源包。 如 家族名SampleRB_de称为德语版,所以,如果地区是Locale。GERMAN就会使用SampleRB_de。

    ResourceBundle有两个子类,第一个是PropertyResourceBundle,该类使用属性文件管理资源,没有添加自己的方法。第二个是抽象类ListResourceBundle,该类使用

    键/值对数组管理资源。

Java基础知识拾遗(三)的更多相关文章

  1. java基础知识拾遗(三)

    1.类加载 bootstrap classloader -引导(也称为原始)类加载器,它负责加载Java的核心类. extension classloader -扩展类加载器,它负责加载JRE的扩展目 ...

  2. Java基础知识拾遗(一)

    类型提升规则 Java定义了几个应用于表达式的类型提升规则:所有byte.short和char类型的值都被提升为int类型.如果有一个操作数是long类型,将这个表达式提升为 long 类型:如果有一 ...

  3. java 基础知识(三)

    Arraylist与Vector的区别 清浅池塘 程序员,专栏:Java那些事儿唯一作者,咨询前请先点详细资料   162 人赞同了该文章 这几天工作有点忙,有很多代码需要写,更新文章有点慢,说声抱歉 ...

  4. Java基础知识(三)

    一.hashCode 与 equals (重要) 面试官可能会问你:"你重写过 hashcode 和 equals 么,为什么重写equals时必须重写hashCode方法?" 1 ...

  5. java基础知识拾遗(二)

    1.finally public static int func (){ try{ return 1; }catch (Exception e){ return 2; }finally { retur ...

  6. Java基础知识拾遗(一)

    Java Threads 1. 创建线程的三种方法? 继承Thread类: 实现Runnable接口: 使用Executor框架创建一个线程池. 每个线程都有优先级(Thread.MAX_PRIORI ...

  7. Java基础知识拾遗(四)

    IO SequenceInputStream,允许链接多个InputStream对象.在操作上该类从第一个InputStream对象进行读取,知道读取完全部内容,然后切换到第二个InputStream ...

  8. java基础知识(三)java关键字

    关键字是电脑语言事先定义的,是特别意义的标识符,又叫保留字.用来表示一种数据类型或程序的结构等,关键字不能用作变量名.类名.方法名或参数.java目前共有50个关键字,其中"const&qu ...

  9. Java 基础知识总结 (三、运算符)

    三.Operators 运算符 Assignment Operators(赋值运算符) =   +=   -=   %=   *=   /=    <<=     >>=    ...

随机推荐

  1. 高通方案的Android设备几种开机模式的进入与退出

    高通方案的Android设备主要有以下几种开机模式,Android.EDL.Fastboot.Recovery和FFBM,其进入及退出的方式如下表. 开机模式 屏幕显示 冷启动 热启动 按键退出 命令 ...

  2. 如何快速清理 docker 资源

    如果经常使用 docker,你会发现 docker 占用的资源膨胀很快,其中最明显也最容易被察觉的应该是对磁盘空间的占用.本文将介绍如何快速的清理 docker 占用的系统资源,具体点说就是删除那些无 ...

  3. Python开发者现实版养成路线:从一无所知到无所不知

    初级开发者学Python容易陷入茫然,面对市面上种类众多的编程语言和框架,重要的是坚持自己的选择,宜精不宜杂.本文是一篇指路文,概述了从编程基础.引导.文档阅读.书籍和视频.源代码等学习和积累环节,值 ...

  4. python使用rabbitMQ介绍一(生产-消费者模式)

    1 模式介绍 生产者-消费者模式是最简单的使用模式. 一个生产者P,给队列发送消息,一个消费者C来取队列的消息. 这里的队列长度不限,生产者和消费者都不用考虑队列的长度. 队列的模型图: 2 示例代码 ...

  5. SQLServer之创建用户定义的数据库角色

    创建用户定义的数据库角色注意事项 角色是数据库级别的安全对象. 在创建角色后,可以使用 grant.deny 和revoke来配置角色的数据库级权限. 若要向数据库角色添加成员,请使用alter ro ...

  6. mysql 分组内 排序

    mysql 分组内 排序 类似于 sqlserver over partition by   因为mysql中木有sqlserver over partition by这个函数,要从sqlserver ...

  7. 【算法】深度优先 马走日 Hamilton routes

    在n*m的棋盘中,马只能走“日” 字.马从位置(x,y)处出发,把棋盘的每一格都走一次,且只走一次.找出所有路径. ××××××××××××× 类似问题: 在半个中国象棋棋盘上,马在左下角(1,1)处 ...

  8. 【MySQL 读书笔记】普通索引和唯一索引应该怎么选择

    通常我们在做这个选择的时候,考虑得最多的应该是如果我们需要让 Database MySQL 来帮助我们从数据库层面过滤掉对应字段的重复数据我们会选择唯一索引,如果没有前者的需求,一般都会使用普通索引. ...

  9. Python基础:编码规范(4)

    1.命名规范 Python中不同代码元素采用不同命名方式: ◊ 包名:全部小写字母,中间可以由点分隔开.作为命名空间,包名需具有唯一性. ◊ 模块名:全部小写字母,如果是多个单词构成,使用下划线分隔. ...

  10. 微信小程序音乐播放

    最近在写一个艾美食艾音乐的微信小程序,其中有用到音乐播放的功能,基本播放切换功能已经实现,但是在反复切换歌曲.重新进入歌曲以及单曲循环.列表循环的测试过程中还是发生了bug,特此写一篇文章,捋一下思路 ...