集合框架

  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. OpenGL Windows 窗口程序环境搭建

    OpenGL环境搭建步骤: Downloading OpenGL 根据官网的说法: In all three major desktop platforms (Linux, macOS, and Wi ...

  2. Storm入门-Storm与Spark对比

    作为一名程序员通病就是不安分,对业界的技术总要折腾一番,哪怕在最终实际工作中应用到的就那么一点.最近自己准备入门Storm学习,关于流式大数据框架目前比较流行的有Spark和Storm等,在入门之前, ...

  3. SQLServer之创建事务序列化

    创建事务序列化注意事项 语法:set transaction isolation level serialize; 序列化会指定下列内容: 语句不能读取已由其他事务修改但尚未提交的数据. 任何其他事务 ...

  4. centos7 永久添加静态路由

    查看路由表 ip route show|column -t route -n 永久添加路由 vim /etc/sysconfig/network-scripts/route-ens224 via 17 ...

  5. 数据库【mongodb篇】练习操作

    本文的目标是通过大量的示例,来更好的理解如果在Mongodb中进行数据操作: 初入客户端刚利用 mongod命令进入客户端环境,此时对数据库一无所知: 举目四望,想知道现在有哪些数据库,   show ...

  6. Python函数默认参数的陷阱

    默认参数实际上只有一个值 代码1 def func(l = 1): l += 1 print(l) func() func() func() 代码2 lst = [] def func(a,l = l ...

  7. 随心测试_软测基础_008<测试对象整体认识>

    关于:软件测试的整体认识,首先:认识:测试 对象     与  测试主体(人) 之间的关系 核心理解如下: 不同的测试对象,选取 不同的测试方法 软件项目的周期中:提出 需求 ——>软件实现—— ...

  8. JDK8中HashMap

    引用别人的一句话: JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里.但是当位于一个桶中的元素较多,即hash值相等的元素较多 ...

  9. JAVA如何利用Swiger获取Linux系统电脑配置相关信息

    最近开发java应用程序,涉及到获取Linux服务器相关配置的问题,特地网上搜寻了下,采用Swiger包可以直接获取,再次小结一下,以便于以后能方便使用,也便于其他童鞋们学习. 推荐大家参考链接:ht ...

  10. Docker 核心技术之镜像

    镜像简介 镜像是一个Docker的可执行文件,其中包括运行应用程序所需的所有代码内容.依赖库.环境变量和配置文件等. 通过镜像可以创建一个或多个容器. 镜像搜索 - docker search 作用: ...