`
FlyAway2
  • 浏览: 111777 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java.util的API的学习

    博客分类:
  • j2se
阅读更多

 

接口  

Collection Collection 层次结构 中的根接口。Collection 表示一组对象  

add clear contains remove size iterator .....

isEmpty  这样就可以不用判断其size 是否==0了

toArray Object[] toArray() 返回包含此 collection 中所有元素的数组 此方法充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。 

 

 

Comparator 

public interface Comparator<T>强行对某个对象 collection 进行整体排序 的比较函数        int compare(T o1, T o2) 

 

 

Deque 

Enumeration 

EventListener 所有事件侦听器接口必须扩展的标记接口。

Formattable 接口必须通过需要执行自定义格式化(使用 Formatter 的 's' 转换说明符)的任何类来实现 ,,,  Formatter 

void formatTo(Formatter formatter, int flags, int width, int precision) 

 

 

Iterator 

public interface Iterator<E>对 collection 进行迭代的迭代器。迭代器取代了 Java Collections Framework 中的 Enumeration。迭代器与枚举有两点不同: 

迭代器允许调用者利用定义良好的语义在迭代期间从迭代器所指向的 collection 移除元素。 —————————— remove

方法名称得到了改进。 

就三个方法:

hasNext() next(), remove();

 

List 列表通常允许重复的元素 列表通常允许满足 e1.equals(e2) 的元素对 e1 和 e2,并且如果列表本身允许 null 元素的话,通常它们允许多个 null 元素

equals

hashCode() 

          返回列表的哈希码值。

 

 

 

ListIterator 

Map 将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。 —————— 值可重复,1对1关系

Map.Entry 

NavigableMap 

NavigableSet 

Observer 一个可在观察者要得到 observable 对象更改通知时可实现 Observer 接口的类。 

 

Queue 

RandomAccess 

Set 一个不包含重复元素的 collection。

更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素。!!!!!!!!!!!!!!!!!

正如其名称所暗示的,此接口模仿了数学上的 set 抽象

SortedMap 

SortedSet 

 

 

一些列的Abstract list set map queue等

 

ArrayList  注意,此实现不是同步的  ???????

 Collections.synchronizedList 方法将该列表“包装”起来。这最好在创建时完成,以防止意外对列表进行不同步的访问:

        List list = Collections.synchronizedList(new ArrayList(...)); 

public static <T> List<T> asList(T... a)返回一个受指定数组支持的固定大小的列表。(对返回列表的更改会“直接写”到数组。)

此方法同 Collection.toArray() 一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。返回的列表是可序列化的,并且实现了 RandomAccess。 ———————— 原来如此

大批的签名类似的方法:

binarySearch copyOf ;;;; SORT 

 

 

 

public class ArrayList<E>extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, SerializableList 接口的大小可变数组的实现

 

 

 

 

工具类 Arrays Collections

 

 

 

Calendar

public abstract class Calendar extends Objectimplements Serializable, Cloneable, Comparable<Calendar>

虽然是个抽象的类,但是还是提供很多有用的静态方法:

getInstance() 

          使用默认时区和语言环境获得一个日历。 

static Calendar getInstance(Locale aLocale) 

          使用默认时区和指定语言环境获得一个日历。 

static Calendar getInstance(TimeZone zone) 

          使用指定时区和默认语言环境获得一个日历。 

static Calendar getInstance(TimeZone zone, Locale aLocale) 

          使用指定时区和语言环境获得一个日历。 

 

 

 

public class GregorianCalendar extends CalendarGregorianCalendar 是 Calendar 的一个具体子类———— 唯一一个已知的

 

 

 

 

public final class Currency extends Objectimplements Serializable表示货币。货币由 ISO 4217 货币代码标识

 

public abstract class Dictionary<K,V>extends Object

 

public class EventObjectextends Objectimplements Serializable

所有事件状态对象都将从其派生的根类。 

public class HashMap<K,V>extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable基于哈希表的 Map 接口的实现。

此实现提供所有可选的映射操作,并允许使用 null 值和 null 键

 

public class Hashtable<K,V>extends Dictionary<K,V>implements Map<K,V>, Cloneable, Serializable此类实现一个哈希表,

该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。—————————————————— 蛋疼

Hashtable 的实例有两个参数影响其性能:初始容量 和加载因子

 

 

public final class Locale extends Objectimplements Cloneable, Serializable

对象表示了特定的地理、政治和文化地区。需要 Locale 来执行其任务的操作称为语言环境敏感的 操作,它使用 Locale 为用户量身定制信息。例如,显示一个数值就是语言环境敏感的操作,应该根据用户的国家、地区或文化的风俗/传统来格式化该数值。 

 

使用此类中的构造方法来创建 Locale: 

 

 Locale(String language)

 Locale(String language, String country)

 Locale(String language, String country, String variant)

 

 主要包括: 语言 、 国家/地区

 语言参数是一个有效的 ISO 语言代码、

 国家/地区参数是一个有效的 ISO 国家/地区代码

 

getCountry()  getLanguage() getVariant() 

 

 

getDefault() 

 

 

Properties 有用的一个工具把

public class Properties extends Hashtable<Object,Object>Properties 类表示了一个持久的属性集。

Properties 可保存在流中或从流中加载。————————— 这点很重要啊

属性列表中每个键及其对应值都是一个字符串。 

 String getProperty(String key) 

          用指定的键在此属性列表中搜索属性。 

 String getProperty(String key, String defaultValue) 

          用指定的键在属性列表中搜索属性。 

 void list(PrintStream out) 

          将属性列表输出到指定的输出流。 

 void list(PrintWriter out) 

          将属性列表输出到指定的输出流。 

 void load(InputStream inStream) 

 

 Object setProperty(String key, String value) 

  void storeToXML(OutputStream os, String comment) 

          发出一个表示此表中包含的所有属性的 XML 文档。 

 

 

 

public final class PropertyPermissionextends BasicPermission此类用于属性权限。 

 

 

 

Random  此类的实例用于生成伪随机数流

 0.0 和 1.0 之间

 double nextDouble() 

          返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 double 值。 

 float nextFloat() 

          返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 float 值。 

 double nextGaussian() 

          返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的 double 值,其平均值是 0.0,标准差是 1.0。 

 

 

Random.nextInt???????????//

nextInt() 

          返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。

nextLong() 

          返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。

nextInt(int n) 

          返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。

setSeed(long seed) ———————— 设置种子? 搞不懂他具体是做什么的!

 

———————————— setSeed 的常规协定是它更改此随机数生成器对象的状态,使其状态好像是刚刚使用参数 seed 作为种子创建它的状态一样

 

 

 

ResourceBundle ———— 所谓的‘资源包’,真难....最后才想到了这一点,老是看api上说资源包资源包资源包,但是就是不知道,资源包就是ResourceBundle。。。。nnd

public abstract class ResourceBundle extends Object

 

 

当程序需要特定于语言环境的对象时,它使用 getBundle 方法加载 ResourceBundle 类: (有一些列重载的getBundle方法,其中有些相互调用)

 ResourceBundle myResources =

      ResourceBundle.getBundle("MyResources", currentLocale);

其中,我们应该准备 baseName + "_" + language1 + "_" + country1 + "_" + variant1 . properties 文件(貌似。class 也行!!!),其中baseName 不可省略

 

---下面的东东虽然冗长而专业,也许第一次看的时候,头痛,但反复看了后也是可以理解的!!!

##########################################################################################################################################################

从概念上讲,getBundle 使用下列策略来搜索并实例化资源包: 

 

getBundle 使用基本名称、指定的语言环境和默认语言环境(从 Locale.getDefault 获得)来生成候选包名称 序列。

如果指定语言环境的语言、国家/地区和变量都是空字符串,则基本名称就是唯一的候选包名称。

否则,从指定语言环境(language1、country1 和 variant1)和默认语言环境(language2、country2 和 variant2)的属性值生成下列序列: 

 

baseName + "_" + language1 + "_" + country1 + "_" + variant1 

baseName + "_" + language1 + "_" + country1 

baseName + "_" + language1 

baseName + "_" + language2 + "_" + country2 + "_" + variant2 

baseName + "_" + language2 + "_" + country2 

baseName + "_" + language2 

baseName 

省略最后部分为空字符串的候选包名称。例如,如果 country1 是一个空字符串,则省略第二个候选包名称。 

 

然后 getBundle 在候选包名称上进行迭代,找到第一个可实例化 为实际资源包的候选包名称。对于每个候选包名称,它都试图创建资源包: 

首先,它试图使用候选包名称加载一个类。如果可以找到这样的类并使用指定的类加载器加载,而且此类的分配与 ResourceBundle 兼容,可通过 ResourceBundle 访问,

并可以被实例化,那么 getBundle 将创建此类的一个新实例,并使用它作为结果资源包。 

否则,getBundle 尝试搜索属性资源文件。它从候选包名称生成一个路径名,用 "/" 替换所有的 "." 字符,并添加字符串 ".properties"。

然后尝试用 ClassLoader.getResource 找到一个具有此名称的“资源”(注意,getResource 获得的“资源”与资源包中的内容没有任何关系,

它只是一个数据的容器,如文件)。如果它找到一个“资源”,则会尝试用其内容创建一个新的 PropertyResourceBundle。如果成功,那么此实例就成为结果资源包。 

如果未找到结果资源包,则抛出 MissingResourceException。 

 

找到了结果资源包后,它的父链 将被实例化。getBundle 在可以获得的候选包名称中进行迭代,获得名称的方法是从结果资源包的包名称中连续移除变量、国家/地区和语言

(每次都用前缀 "_")。如上所述,省略最后部分为空字符串的候选包名称。对于每个候选包名称,

都尝试实例化一个资源包,如上所述。只要能够成功,就用新的资源包调用先前已实例化资源包的 setParent 方法,除非先前已实例化的资源包已经有非 null 的父包。 

 

getBundle 可以缓存已实例化的资源包,并且可以多次返回相同的资源包实例。 

 

##########################################################################################################################################################

总结:baseName是当然不能没有的,否则,怎么搞?

首先寻找继承ResourceBundle的class,

否则寻找配置的:baseName + "_" + language1 + "_" + country1 + "_" + variant1  . properties

否则通过Locale。getDefault()获取默认的语言地区,然后寻找默认的baseName _ default language _ default country _default variant . properties

否则还是没找到,也没办法,就报错了,——————java.util.MissingResourceException: Can't find bundle for base name [baseName], locale [default language]

 

重要方法:------其实感觉就是类似hashtable的一些操作了,因为资源文件(就是资源包!!!)就是类似map的key和value了

containsKey(String key) 从以下版本开始: 1.6 —————— 坑爹,难怪测试的时候总报错!!

getString(String key) 

getKeys() 

getLocale() 

getObject(String key) 

getString(String key) 

getStringArray(String key) 

 

keySet() 

 

clearCache() 

setParent(ResourceBundle parent) ----这个。。

 

 

 

 

public class PropertyResourceBundle extends ResourceBundle

 

 

顺便说一下Locale

Locale —————— 其实是一个简单的对象,不过是对语言、国家/地区和变量的一个封装,然后——————就是构造一个语言环境

public Locale(String language,

              String country,

              String variant)根据语言、国家/地区和变量构造一个语言环境。

 

参数:

language - 小写的两字母 ISO-639 代码。

country - 大写的两字母 ISO-3166 代码。

variant - 特定于供应商和浏览器的代码。参见类描述

 

还可以只是通过language,简单的构造:

Locale

public Locale(String language)

或者:

public Locale(String language,

              String country)

 

那么 new Locale("zh");和 new Locale("zh","CN"),的区别是?自己试试就知道了:一个是仅包括语言的东东,一个包含了国家的东东——————当然,同时就包含了语言

下两者是很大差别的:

Locale currentLocale = Locale.GERMAN;//仅指示了语言

Locale currentLocale = Locale.GERMANY;//包括了德国的语言、国家/地区

 

 

ServiceLoader   ———————— 好难懂

public final class ServiceLoader<S>extends Objectimplements Iterable<S>一个简单的服务提供者加载设施。 

 

 

TimeZone ——————其实是一个简单的东东,没什么好怕的

public abstract class TimeZone extends Objectimplements Serializable, CloneableTimeZone 表示时区偏移量,也可以计算夏令时。

subclass:

public class SimpleTimeZone extends TimeZone

 

TreeMap 没怎么用过啊,不管它了

public class TreeMap<K,V>extends AbstractMap<K,V>implements NavigableMap<K,V>, Cloneable, Serializable基于红黑树(Red-Black tree)的 NavigableMap 实现

TreeSet

 

Timer ——————主要其多线程的特性 

——————一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。

 void cancel() 

          终止此计时器,丢弃所有当前已安排的任务。 

 int purge() 

          从此计时器的任务队列中移除所有已取消的任务。 

 void schedule(TimerTask task, Date time) 

          安排在指定的时间执行指定的任务。 

 void schedule(TimerTask task, Date firstTime, long period) 

          安排指定的任务在指定的时间开始进行重复的固定延迟执行。 

 void schedule(TimerTask task, long delay) 

          安排在指定延迟后执行指定的任务。 

 void schedule(TimerTask task, long delay, long period) 

          安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。 

 void scheduleAtFixedRate(TimerTask task, Date firstTime, long period) 

          安排指定的任务在指定的时间开始进行重复的固定速率执行。 

 void scheduleAtFixedRate(TimerTask task, long delay, long period) 

          安排指定的任务在指定的延迟后开始进行重复的固定速率执行 

 

TimerTask

public abstract class TimerTask extends Objectimplements Runnable由 Timer 安排为一次执行或重复执行的任务

 

UUID 关键方法就是randomUUID,其余方法都是辅助

public final class UUID extends Objectimplements Serializable, Comparable<UUID>

 int clockSequence() 

          与此 UUID 相关联的时钟序列值。 

static UUID fromString(String name) 

          根据 toString() 方法中描述的字符串标准表示形式创建 UUID。 

 long getLeastSignificantBits() 

          返回此 UUID 的 128 位值中的最低有效 64 位。 

 long getMostSignificantBits() 

          返回此 UUID 的 128 位值中的最高有效 64 位。 

 int hashCode() 

          返回此 UUID 的哈希码。 

static UUID nameUUIDFromBytes(byte[] name) 

          根据指定的字节数组获取类型 3(基于名称的)UUID 的静态工厂。 

 long node() 

          与此 UUID 相关的节点值。 

static UUID randomUUID() 

          获取类型 4(伪随机生成的)UUID 的静态工厂。 

 long timestamp() 

          与此 UUID 相关联的时间戳值。 

 

Stack Vector的子类而已,Collection接口的实现而已

public class Stack<E>extends Vector<E>Stack 类表示后进先出(LIFO)的对象堆栈

empty() 

peek() 

pop() 

push(E item) 

search(Object o) 

 

 

Vector 用过,功能类似ArrayList,不同的地方在于他的 线程安全特性

public class Vector<E>extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, SerializableVector 类可以实现可增长的对象数组

 

WeakHashMap 不懂

public class WeakHashMap<K,V>extends AbstractMap<K,V>implements Map<K,V>以弱键 实现的基于哈希表的 Map

 

 

StringTokenizer 说白了就是将string视为由Tokenizer和delim组成的东东,然后分割。倒是见过很多次,其实没什么鸟用

_________ StringTokenizer 是出于兼容性的原因而被保留的遗留类(虽然在新代码中并不鼓励使用它)。建议所有寻求此功能的人使用 String 的 split 方法或 java.util.regex 包。 

 

public class StringTokenizer extends Objectimplements Enumeration<Object>string tokenizer 类允许应用程序将字符串分解为标记

构造方法:

StringTokenizer

public StringTokenizer(String str,

                       String delim,

                       boolean returnDelims) 为指定字符串构造一个 string tokenizer,delim 参数中的所有字符都是分隔标记的分隔符

————同时指定其中分隔符的一个string而已

 

如果 returnDelims 标志为 true,则分隔符字符也作为标记返回。每个分隔符都作为一个长度为 1 的字符串返回。如果标志为 false,则跳过分隔符,只是用作标记之间的分隔符。 

注意,如果 delim 为 null,则此构造方法不抛出异常。但是,尝试对得到的 StringTokenizer 调用其他方法则可能抛出 NullPointerException

 

public StringTokenizer(String str,

                       String delim)———————— 相对于StringTokenizer(str,delim,false)

 

public StringTokenizer(String str)为指定字符串构造一个 string tokenizer。tokenizer 使用默认的分隔符集 " \t\n\r\f",

即:空白字符、制表符、换行符、回车符和换页符。分隔符字符本身不作为标记。 

 

分享到:
评论

相关推荐

    用java.util.zip包现数据压缩与解压

    Java 的 `java.util.zip` 包提供了丰富的 API 来支持数据的压缩和解压缩工作。该包中包含了如 `ZipEntry`、`ZipFile`、`ZipInputStream` 和 `ZipOutputStream` 等类,它们可以用来处理 ZIP 格式的文件。此外,还包含...

    java API 在包java.util中有一个GregorianCalendar类,使用它可以得到一年内某个月的日历.zip

    Java API中的`java.util.GregorianCalendar`类是用于处理日期和时间的重要工具,它提供了丰富的功能来满足各种日历操作需求。这个类是基于格里高利历(公历)的,是Java中最常用的日期时间类之一。在给定的压缩包...

    java.util.pdf

    标题“java.util.pdf”暗示这是一个关于Java编程语言中util包的文档。由于描述和标签均重复标题,我们可以推断文档重点在于解释和...学习和理解java.util包中的每一个类和接口,对于Java开发者来说是基础且必不可少的。

    java.util包

    在Java 8之后,新的日期和时间API(java.time包)提供了更好的日期和时间处理能力,但旧的Date和Calendar仍然被广泛使用。 8. Collections和Arrays工具类:Collections提供了许多静态方法,用于操作集合,如排序、...

    java.sql.date与java.util.date.pdf

    最后,`java.sql.Date`类虽然基于`java.util.Date`,但两者在功能上有所不同,而且随着时间推移,Java社区也越来越推荐使用Java 8引入的`java.time`包中的新日期时间API(如`LocalDate`, `LocalDateTime`, `...

    Java中的`java.util.stream.Collectors.toMap()`方法有什么作用

    在Java中,java.util.stream.Collectors.toMap()方法是一个非常实用的工具,它允许我们将流(Stream)中的元素收集到一个Map中。这个方法是Collectors类中的一个静态方法,它实现了Collector接口,用于在流的终止...

    java.util.TimeZone 的世界时区列表

    ### Java.util.TimeZone的世界时区列表解析 #### 一、概述 `java.util.TimeZone` 是Java标准库中的一个类,用于表示不同时区的信息。本文档提供了通过`java.util.TimeZone`类导出的世界范围内时区列表。该列表不仅...

    java.util.concurrent.Callable API介绍和简单案例

    java.util.concurrent.Callable API介绍和简单案例

    java.util.concurrent.BlockingDeque API介绍和简单案例

    java.util.concurrent.BlockingDeque API介绍和简单案例

    struts的form不能初始化java.util.Date类型

    - **使用Java 8的LocalDate/LocalDateTime**:如果项目允许,可以考虑升级到Java 8,并使用新的日期时间API,如LocalDate或LocalDateTime,它们有更友好的处理方式。 4. **最佳实践**: - 尽可能避免在表单中直接...

    android-retrostreams,Android Studio 3.0 Desugar工具链Java 9 java.util.stream API的后台端口,派生自.zip

    "android-retrostreams"项目就是这样一个解决方案,它为Android平台提供了Java 9中的`java.util.stream` API支持。这个项目是基于`streamsupport`库的一个分支,旨在解决在Android Studio 3.0及更高版本中使用Java 9...

    java.util.Calendar求日期

    通过以上代码片段和解释,我们可以看到`java.util.Calendar`类的强大功能,它不仅能够帮助我们获取和操作日期,还提供了丰富的API来处理各种复杂的日期计算场景。掌握了这些基本概念后,开发者可以在实际项目中灵活...

    java base64源码+jar包

    `sun`目录通常包含Java的内部实现类,这些类并不是公开API的一部分,可能会在未来的Java版本中改变或者移除。因此,直接使用这些类是不推荐的,因为这可能导致兼容性问题。在给定的压缩包中,`sun`目录可能包含了...

    深入理解Java中的`java.util.stream.Collector`接口

    在Java 8引入的Stream API中,java.util.stream.Collector接口扮演着至关重要的角色。它不仅丰富了集合处理的方式,还提供了一种声明式的数据转换和汇总方法。本文将详细探讨Collector接口的工作原理、核心方法、...

    java.util.Date与java.sql.Date的区别

    在Java编程中,日期处理是常见的任务之一,`java.util.Date` 和 `java.sql.Date` 都是用来表示日期的类,但它们之间存在显著的区别和用法差异。 首先,`java.util.Date` 是 Java 核心库 `java.util` 包中的类,它...

    java类源码-lambda:学习java.util,java.util.function,java.util.stream下面的源码,只要上

    这次我们将会深入学习 `java.util`、`java.util.function` 和 `java.util.stream` 这三个包下的源码,来理解这些新特性的实现原理和设计思想。 首先,Lambda 表达式是函数式编程的核心概念,它提供了一种简洁的方式...

    JBuider第七章:Java.util包.rar

    通过学习和实践Java.util包中的这些组件,开发者能够编写出更高效、更灵活的代码。同时,理解并熟练运用这些工具,有助于提升问题解决能力和软件设计水平。希望这个教程能帮助你巩固基础,进一步提升你的Java编程...

    java.util.concurrent.ExecutionException 问题解决方法

    `java.util.concurrent.ExecutionException` 是Java并发编程中一个常见的异常,通常在执行Future对象的get()方法时抛出。这个异常表明在异步任务的执行过程中发生了异常。当我们使用ExecutorService提交任务并尝试...

Global site tag (gtag.js) - Google Analytics