java.util笔记

java.util

包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)

--接口

         --Collection<E>  [Collection层次结构中的根接口。]

         --Comparator<T>  [强行对某个对象collection进行整体排序的比较函数。参数T-可比较的对象类型。实现其compareT o1,T o2)有一个约定,就是 a.compare(b) == 0 a.equals(b)要有相同的boolean结果ComparableComparator都是用来实现集合中的排序的,只是Comparable是在集合内部定义的方法实现排序,而Comparator是在集合外部实现的排序。]

         --Deque<E>  [一个线性 collection,支持在两端插入和移除元素。名称 deque 是“double ended queue(双端队列)”的缩写。使用有限制的双端队列的时候,增加元素时offer()优于add(),add无法插入时只能抛出一个异常。peek()获取,但不移除此双端队列所表示的队列的头部(换句话说,此双端队列的第一个元素);如果此双端队列为空,则返回 null。] 

         --Enumeration<E>  [实现 Enumeration 接口的对象,它生成一系列元素,一次生成一个。连续调用 nextElement 方法将返回一系列的连续元素。这些方法主要通过向量的元素、哈希表的键以及哈希表中的值进行枚举。枚举也用于将输入流指定到 SequenceInputStream 中。Iterator 接口可完全代替它,建议优先考虑Iterator 接口。]

         --EventListener  [所有事件侦听器接口必须扩展的标记接口,里面什么东西都木有0.0]

         --Formattable  [formatTo(Formatter formatter,int flags,int width,intprecision)使用提供的格式器来格式化对象。参数:formatter - 格式器。实现类可以调用 formatter.out() 或 formatter.locale(),以获得分别由此 formatter 使用的 Appendable 或 Locale。flags - 这些标志将修改输出格式。该值被解释为位掩码(bitmask)。可以将以下标志的组合设置为:FormattableFlags.LEFT_JUSTIFY、FormattableFlags.UPPERCASE 和 FormattableFlags.ALTERNATE。如果没有设置标志,则应用实现类的默认格式。width - 写入到输出的最少字符数。如果转换值的长度小于 width,那么输出将用 '  ' 来填充,直到总字符数等于 width。默认情况下,从开始处进行填充。如果设置了 FormattableFlags.LEFT_JUSTIFY 标志,则从结尾处进行填充。如果 width 为 -1,则不存在最少字符数。precision - 写入到输出的最多字符数。precision 应用在 width 之前,因此,即使 width 大于 precision,输出也将被截断为 precision 字符。如果 precision 为 -1,那么对于字符的数量没有明显限制。]

         --Iterator<E>  [对 collection 进行迭代的迭代器。]

         --List<E> 

         --ListIterator<E>  [系列表迭代器,允许程序员按任一方向遍历列表、迭代期间修改列表,并获得迭代器在列表中的当前位置。ListIterator 没有当前元素;它的光标位置 始终位于调用 previous() 所返回的元素和调用 next() 所返回的元素之间。长度为 n 的列表的迭代器有 n+1 个可能的指针位置。注意,remove() set(Object) 方法不是根据光标位置定义的;它们是根据对调用 next() previous()所返回的最后一个元素的操作定义的。]

         --Map<K,V>  [某些映射实现可明确保证其顺序,如 TreeMap 类;另一些映射实现则不保证顺序,如 HashMap 类。]

         --Map.Entry<K,V>  [映射项(键-值对)。Map.entrySet 方法返回映射的 collection 视图,其中的元素属于此类。]

         --NavigableMap<K,V>  [扩展的 SortedMap,具有了针对给定搜索目标返回最接近匹配项的导航方法。方法 lowerEntry、floorEntry、ceilingEntry 和 higherEntry 分别返回与小于、小于等于、大于等于、大于给定键的键关联的最大/最小键 Map.Entry 对象,如果不存在这样的键,则返回 null。类似地,方法 lowerKey、floorKey、ceilingKey 和 higherKey 只返回关联的键。所有这些方法是为查找条目而不是遍历条目而设计的。]

         --NavigableSet<E>  [扩展的 SortedSet,具有了为给定搜索目标报告最接近匹配项的导航方法。其他的,参考上一个接口。]

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

         --Queue<E>

         --RandomAccess  [List 实现所使用的标记接口,用来表明其支持快速(通常是固定时间)随机访问]

         --Set<E>  [一个不包含重复元素的 collection]

         --SortedMap<K,V>  [进一步提供关于键的总体排序 的 Map。该映射是根据其键的自然顺序进行排序的,或者根据通常在创建有序映射时提供的 Comparator 进行排序。]

         --SortedSet<E>  [进一步提供关于元素的总体排序 的 Set]

--类

         若此实现非同步(即非线程安全),又要防止对映射进行意外的非同步访问,最好在对象创建时使用Collections.synchronizedMap方法来“包装”。如:Map m = Collections.synchronizedXXX(new HashMap(...));

         --ArrayList  [此实现不是同步的,所以建议在多线程中选择Vector。如果多个线程同时访问一个 ArrayList 实例,而其中至少一个线程从结构上修改了列表,那么它必须保持外部同步。这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedList 方法将该列表“包装”起来。这最好在创建时完成,以防止意外对列表进行不同步的访问: List list =Collections.synchronizedList(new ArrayList(...));]

         --Collections  [此类完全由在 collection 上进行操作或返回 collection 的静态方法组成。查找一下LMS中的指定元素、根据比较器或者自然顺序给出最大最小元素等很多的方法。]

         --Calendar  [是一个抽象类,提供了一个类方法getInstance来获得此类型的一个通用对象,其日历字段已由当前日期和时间初始化:Calendar rightNow = Calendar.getInstance();。set/getTime()设置、返回一个表示此Calendar时间值的Date对象。]

         --Date [after/before(Date when)测试次日起是否在指定日期之前/之后;clone()返回此对象的副本;compareTo(Date anotherDate)比较两个日期的顺序;equals(Objecr obj)比较两个日期的相等性;set/getTime()设置/返回自1970-1-1-00:00:00GMT到现在的毫秒数;toString() 把此 Date 对象转换为以下形式的 String:dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。除此之外,其他方法都已过时,都可用Calendar类中的相应方法取代。]

         --HashMap<K,V>  [此实现不是同步的。HashMap 的实例有两个参数影响其性能:初始容量和加载因子。容量是哈希表中桶的数量,初始容量只是哈希表在创建时的容量。加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行 rehash 操作(即重建内部数据结构),从而哈希表将具有大约两倍的桶数。 ]

         --HashSet<E>  [此实现不是同步的。此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持]

         --Hashtable<K,V>  [与HashMap的区别就是它是同步的,其他的没有什么差异0.0]

         --LinkedHashMap<K,V>  [此实现不是同步的。它保留插入的顺序,如果需要输出的顺序和输入时的相同,那么就选用它。]

         --LinkedList<E>  [此实现不是同步的。List 接口的链接列表实现。实现所有可选的列表操作,除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。]

         --Locale  [Locale对象表示了特定的地理、政治和文化地区。]

         --PriorityQueue<E>  [此实现不是同步的。一个基于优先级堆的无界优先级队列。优先级队列的元素按照其自然顺序进行排序,或者根据构造队列时提供的 Comparator 进行排序,具体取决于所使用的构造方法。]

         --Stack<E>  [后进先出的对象堆栈。Deque接口及其实现提供了LIFO堆栈操作的更完整和更一致的set,应该优先使用此set,而非此类。如:Deque<Integer> stack = newArrayDeque<Integer>();]

         -- StringTokenizer  [StringTokenizer是一个用来分隔String的应用类,相当于VB的split函数。]

         --TreeMap<K,V>  [此实现不是同步的。适用于按自然顺序或自定义顺序遍历key,比HashMap慢,建议在需要排序时使用。]

         --TreeSet<E>  [此实现不是同步的。基于 TreeMap 的 NavigableSet 实现。使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法。 ]

         --Vector<E>  [Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。这个是实现了同步的,有syn 字段修饰哦0.0]

         --WeakHashMap<K,V>  [以弱键 实现的基于哈希表的 Map。在 WeakHashMap 中,当某个键不再正常使用时,将自动移除其条目。更精确地说,对于一个给定的键,其映射的存在并不阻止垃圾回收器对该键的丢弃,这就使该键成为可终止的,被终止,然后被回收。丢弃某个键时,其条目从映射中有效地移除]

 

通用实现类

接口

哈希表

可变数组

链表List

哈希表+链表

Set

HashSet

 

TreeSet

 

LinkedHashSet

List

 

ArrayList

 

LinkedList

 

Queue

 

 

 

 

 

Map

HashMap

 

TreeMap

 

LinkedHashMap

 

内容概要:本文档主要展示了C语言中关于字符串处理、指针操作以及动态内存分配的相关代码示例。首先介绍了如何实现键值对(“key=value”)字符串的解析,包括去除多余空格和根据键获取对应值的功能,并提供了相应的测试用例。接着演示了从给定字符串中分离出奇偶位置字符的方法,并将结果分别存储到两个不同的缓冲区中。此外,还探讨了常量(const)修饰符在变量和指针中的应用规则,解释了不同类型指针的区别及其使用场景。最后,详细讲解了如何动态分配二维字符数组,并实现了对这类数组的排序与释放操作。 适合人群:具有C语言基础的程序员或计算机科学相关专业的学生,尤其是那些希望深入理解字符串处理、指针操作以及动态内存管理机制的学习者。 使用场景及目标:①掌握如何高效地解析键值对字符串并去除其中的空白字符;②学会编写能够正确处理奇偶索引字符的函数;③理解const修饰符的作用范围及其对程序逻辑的影响;④熟悉动态分配二维字符数组的技术,并能对其进行有效的排序和清理。 阅读建议:由于本资源涉及较多底层概念和技术细节,建议读者先复习C语言基础知识,特别是指针和内存管理部分。在学习过程中,可以尝试动手编写类似的代码片段,以便更好地理解和掌握文中所介绍的各种技巧。同时,注意观察代码注释,它们对于理解复杂逻辑非常有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值