Java基础知识拾遗(三)
集合框架
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基础知识拾遗(三)的更多相关文章
- java基础知识拾遗(三)
1.类加载 bootstrap classloader -引导(也称为原始)类加载器,它负责加载Java的核心类. extension classloader -扩展类加载器,它负责加载JRE的扩展目 ...
- Java基础知识拾遗(一)
类型提升规则 Java定义了几个应用于表达式的类型提升规则:所有byte.short和char类型的值都被提升为int类型.如果有一个操作数是long类型,将这个表达式提升为 long 类型:如果有一 ...
- java 基础知识(三)
Arraylist与Vector的区别 清浅池塘 程序员,专栏:Java那些事儿唯一作者,咨询前请先点详细资料 162 人赞同了该文章 这几天工作有点忙,有很多代码需要写,更新文章有点慢,说声抱歉 ...
- Java基础知识(三)
一.hashCode 与 equals (重要) 面试官可能会问你:"你重写过 hashcode 和 equals 么,为什么重写equals时必须重写hashCode方法?" 1 ...
- java基础知识拾遗(二)
1.finally public static int func (){ try{ return 1; }catch (Exception e){ return 2; }finally { retur ...
- Java基础知识拾遗(一)
Java Threads 1. 创建线程的三种方法? 继承Thread类: 实现Runnable接口: 使用Executor框架创建一个线程池. 每个线程都有优先级(Thread.MAX_PRIORI ...
- Java基础知识拾遗(四)
IO SequenceInputStream,允许链接多个InputStream对象.在操作上该类从第一个InputStream对象进行读取,知道读取完全部内容,然后切换到第二个InputStream ...
- java基础知识(三)java关键字
关键字是电脑语言事先定义的,是特别意义的标识符,又叫保留字.用来表示一种数据类型或程序的结构等,关键字不能用作变量名.类名.方法名或参数.java目前共有50个关键字,其中"const&qu ...
- Java 基础知识总结 (三、运算符)
三.Operators 运算符 Assignment Operators(赋值运算符) = += -= %= *= /= <<= >>= ...
随机推荐
- OpenGL Windows 窗口程序环境搭建
OpenGL环境搭建步骤: Downloading OpenGL 根据官网的说法: In all three major desktop platforms (Linux, macOS, and Wi ...
- Storm入门-Storm与Spark对比
作为一名程序员通病就是不安分,对业界的技术总要折腾一番,哪怕在最终实际工作中应用到的就那么一点.最近自己准备入门Storm学习,关于流式大数据框架目前比较流行的有Spark和Storm等,在入门之前, ...
- SQLServer之创建事务序列化
创建事务序列化注意事项 语法:set transaction isolation level serialize; 序列化会指定下列内容: 语句不能读取已由其他事务修改但尚未提交的数据. 任何其他事务 ...
- centos7 永久添加静态路由
查看路由表 ip route show|column -t route -n 永久添加路由 vim /etc/sysconfig/network-scripts/route-ens224 via 17 ...
- 数据库【mongodb篇】练习操作
本文的目标是通过大量的示例,来更好的理解如果在Mongodb中进行数据操作: 初入客户端刚利用 mongod命令进入客户端环境,此时对数据库一无所知: 举目四望,想知道现在有哪些数据库, show ...
- Python函数默认参数的陷阱
默认参数实际上只有一个值 代码1 def func(l = 1): l += 1 print(l) func() func() func() 代码2 lst = [] def func(a,l = l ...
- 随心测试_软测基础_008<测试对象整体认识>
关于:软件测试的整体认识,首先:认识:测试 对象 与 测试主体(人) 之间的关系 核心理解如下: 不同的测试对象,选取 不同的测试方法 软件项目的周期中:提出 需求 ——>软件实现—— ...
- JDK8中HashMap
引用别人的一句话: JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里.但是当位于一个桶中的元素较多,即hash值相等的元素较多 ...
- JAVA如何利用Swiger获取Linux系统电脑配置相关信息
最近开发java应用程序,涉及到获取Linux服务器相关配置的问题,特地网上搜寻了下,采用Swiger包可以直接获取,再次小结一下,以便于以后能方便使用,也便于其他童鞋们学习. 推荐大家参考链接:ht ...
- Docker 核心技术之镜像
镜像简介 镜像是一个Docker的可执行文件,其中包括运行应用程序所需的所有代码内容.依赖库.环境变量和配置文件等. 通过镜像可以创建一个或多个容器. 镜像搜索 - docker search 作用: ...