C盘空间不够 (清理文件,合并磁盘)

自然语言处理入门学习(二)--字典树

  返回  

JavaSE

2021/7/20 23:32:57 浏览:

javaSE

  • 1、面向对象
    • 1、优点
    • 2、核心特性
      • 2.1、封装
      • 2.2、继承
      • 2.3、多态
  • 2、数组
  • 3、集合类
    • 3.1 collection
      • 3.1.1 Queue
      • 3.1.2 List
        • 3.1.2.1 ArrayList
        • 3.1.2.2 LinkedList
      • 3.1.3 Set
        • 3.1.3.1 HashSet
        • 3.1.3.2 TreeSet
    • 3.2 Map
  • 4、IO流
  • 5、反射
  • 6、泛型
  • 7、异常处理

1、面向对象

1、优点

1、可重用性:代码重复使用,减少代码量,提高开发效率。面向对象的三大核心特性(继承、封装和多态)都围绕这个核心。
2、可扩展性:指新的功能可以很容易地加入到系统中来,便于软件的修改
3、可管理性:能够将功能与数据结合,方便管理

2、核心特性

2.1、封装

封装是将代码及其处理的数据绑定在一起的一种编程机制,该机制保证了程序和数据都不受外部干扰且不被误用。封装的目的在于保护信息。
优点:
1、保护类中的信息,它可以阻止在外部定义的代码随意访问内部代码和数据。
2、有助于建立各个系统之间的松耦合关系,提高系统的独立性
3、提高软件的复用率,降低成本

2.2、继承

指子类拥有父类的全部特征和行为,这是类之间的一种关系。Java 只支持单继承,但 Java 可以实现多个接口

2.3、多态

面向对象的多态性,即“一个接口,多个方法”。多态性体现在父类中定义的属性和方法被子类继承后,可以具有不同的属性或表现方式。多态性允许一个接口被多个同类使用,弥补了单继承的不足。

参考文档:http://c.biancheng.net/view/939.html

2、数组

数组(array)是一种最简单的复合数据类型,它是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来确定数组中唯一的元素。根据数组的维度,可以将其分为一维数组、二维数组和多维数组等。

声明一维数组方式:
(1)数据类型[] 数组名;
(2)数据类型 数组名[];

3、集合类

为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组),Java 提供了集合类。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。Java 所有的集合类都位于 java.util 包下,提供了一个表示和操作对象集合的统一构架,包含大量集合接口,以及这些接口的实现类和操作它们的算法。

Java 集合类型分为 Collection 和 Map,它们是 Java 集合的根接口,这两个接口又包含了一些子接口或实现类。
在这里插入图片描述
参考资料:http://c.biancheng.net/view/6824.html

3.1 collection

Collection 接口是 List、Set 和 Queue 接口的父接口,通常情况下不被直接使用。

3.1.1 Queue

Queue 是 Java 提供的队列实现,有点类似于 List。

3.1.2 List

List 是一个有序、可重复的集合,集合中每个元素都有其对应的顺序索引。List 集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。List 集合默认按元素的添加顺序设置元素的索引,第一个添加到 List 集合中的元素的索引为 0,第二个为 1,依此类推。

List 实现了 Collection 接口,它主要有两个常用的实现类:ArrayList 类和 LinkedList 类。

3.1.2.1 ArrayList

ArrayList 类实现了可变数组的大小,存储在内的数据称为元素。它还提供了快速基于索引访问元素的方式,对尾部成员的增加和删除支持较好。使用 ArrayList 创建的集合,允许对集合中的元素进行快速的随机访问,不过,向 ArrayList 中插入与删除元素的速度相对较慢。

3.1.2.2 LinkedList

LinkedList 类采用链表结构保存对象,这种结构的优点是便于向集合中插入或者删除元素。

3.1.3 Set

Set集合不按照特定的方式排序;不允许重复数据,最多只允许包含一个 null 元素。
Set 实现了 Collection 接口,它主要有两个常用的实现类:HashSet 类和 TreeSet类。

参考资料:http://c.biancheng.net/view/6847.html

3.1.3.1 HashSet

HashSet 是 Set 接口的典型实现,HashSet 是按照 Hash 算法来存储集合中的元素。因此具有很好的存取和查找性能。

HashSet 具有以下特点:
1)不能保证元素的排列顺序,顺序可能与添加顺序不同,顺序也有可能发生变化。
2)HashSet 不是同步的,如果多个线程同时访问或修改一个 HashSet,则必须通过代码来保证其同步。
3)集合元素值可以是 null。
4)HashSet是非线程安全的。
5)HashSet基于HashMap实现,无容量限制。

当向 HashSet 集合中存入一个元素时,HashSet 会调用该对象的 hashCode() 方法来得到该对象的 hashCode 值,然后根据该 hashCode 值决定该对象在 HashSet 中的存储位置。如果有两个元素通过 equals() 方法比较返回的结果为 true,但它们的 hashCode 不相等,HashSet 将会把它们存储在不同的位置,依然可以添加成功。

也就是说,两个对象的 hashCode 值相等且通过 equals() 方法比较返回结果为 true,则 HashSet 集合认为两个元素相等。

3.1.3.2 TreeSet

TreeSet 类同时实现了 Set 接口和 SortedSet 接口。SortedSet 接口是 Set 接口的子接口,可以实现对集合进行自然排序,因此使用 TreeSet 类实现的 Set 接口默认情况下是自然排序的,这里的自然排序指的是升序排序。

TreeSet 只能对实现了 Comparable 接口的类对象进行排序,因为 Comparable 接口中有一个 compareTo(Object o) 方法用于比较两个对象的大小。例如 a.compareTo(b),如果 a 和 b 相等,则该方法返回 0;如果 a 大于 b,则该方法返回大于 0 的值;如果 a 小于 b,则该方法返回小于 0 的值。

TreeSet:
1、TreeSet基于TreeMap实现,支持排序。
2、TreeSet是非线程安全的。

3.2 Map

Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键(key)对象和一个值(value)对象。用于保存具有映射关系的数据。
key 和 value 都可以是任何引用类型的数据。
Map 接口主要有两个实现类:HashMap 类和 TreeMap 类。其中,HashMap 类按哈希算法来存取键对象,而 TreeMap 类可以对键对象进行排序。

HashTable和HashMap采用相同的存储机制,二者的实现基本一致,不同的是:

1)、HashMap是非线程安全的,HashTable是线程安全的,内部的方法基本都是synchronized。

2)、HashTable不允许有null值的存在。

在HashTable中调用put方法时,如果key为null,直接抛出NullPointerException。其它细微的差别还有,比如初始化Entry数组的大小等等,但基本思想和HashMap一样。

HashMap:
1、HashMap采用数组方式存储key,value构成的Entry对象,无容量限制。
2、HashMap基于Key hash查找Entry对象存放到数组的位置,对于hash冲突采用链表的方式来解决。
3、HashMap在插入元素时可能会要扩大数组的容量,在扩大容量时须要重新计算hash,并复制对象到新的数组中。
4、HashMap是非线程安全的。
5、HashMap遍历使用的是Iterator

HashTable
1、HashTable是线程安全的。
2、HashTable中无论是Key,还是Value都不允许为null。
3、HashTable遍历使用的是Enumeration。

从对HashSet和TreeSet的描述来看,TreeSet和HashSet一样,也是完全基于Map来实现的,并且都不支持get(int)来获取指定位置的元素(需要遍历获取),另外TreeSet还提供了一些排序方面的支持。例如传入Comparator实现、descendingSet以及descendingIterator等。

TreeMap:
1、TreeMap是一个典型的基于红黑树的Map实现,因此它要求一定要有Key比较的方法,要么传入Comparator实现,要么key对象实现Comparable接口。
2、TreeMap是非线程安全的。

4、IO流

在 Java 中所有数据都是使用流读写的。流是一组有序的数据序列,将数据从一个地方带到另一个地方。根据数据流向的不同,可以分为输入(Input)流和输出(Output)流两种。

5、反射

6、泛型

参考文档:http://c.biancheng.net/view/1085.html

7、异常处理

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号