添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接


1. 抽象数据类型ADT

抽象数据类型( ADT,Abstract Data Type)是指一个数据结构的数学模型以及定义在此数学模型上的一组操作。

抽象数据类型是描述数据结构的一种理论工具,其目的是使人们能够独立于程序的实现细节来理解数据结构的特性。抽象数据类型的定义取决于它的一组逻辑特性,而与计算机内部如何表示无关。

要理解一种ADT,需要理解它的三方面:数据对象如何定义、数据对象之间的关系如何定义、对数据对象的操作如何定义。

2. Java Libraries

Java具有某些可以使用的内置ADT。这些都打包在Java库中。

java.util库中包含三个最重要的ADT:

java 抽象属性 get java抽象数据类型的定义_List


(白色是接口,蓝色是具体类)

  • List :items的有序集合。流行的实现是 ArrayList
    eg. List<String> words = new ArrayList<>(); ArrayList是List的子类;List是接口不能被实例化,而 ArrayList可以。这句话也可以理解成,我想要一个list,不管是啥都行,在new的时候我指定用ArrayList来实现。
  • List的具体使用:
    导包: import java.util.List; import java.util.ArrayList; List的常用方法有:addLast(), size()…
  • Set :集合中的items是无序且无重复的。流行的实现是 HashSet
    eg. Set<String> ss = new HashSet<>();
  • Set的具体使用:
    导包: import java.util.Set; import java.util.HashSet; List的常用方法有:add(), contains()…
  • Map :键/值对的集合。您可以通过键访问该值。
    流行的实现是 HashMap
    eg. Map<String, Integer> counts = new HashMap<String, Integer>();

3. Java的优点

没太看懂,先复制过来了

  • 由于具有以下功能,可以减少编写程序的时间:
  • 静态类型(提供类型检查并帮助指导程序员)。
  • 接口继承提供了更清晰的多态性。
  • 访问控制修饰符(可能指的是private吧)使abstraction barrier(?)更加牢固。
  • 由于具有以下功能,代码效率更高:
  • 能够更好地控制engineering tradeoff(?)。
  • single valued arrays(?)可带来更好的性能。
  • 基本数据结构更类似于基础硬件:
    用Python做ArrayDeque很奇怪,因为不需要调整数组大小。但是,在硬件中,不存在可变长度的数组。

4. 抽象类与接口

(1)接口的特性

  • 所有方法都必须public。
  • 所有变量必须是public static final(即常量)。
  • 无法实例化
  • 默认情况下,所有方法都是抽象的(不写实现内容),除非指定为 default。(指定为default则可以写实现内容)
  • 每个类可以implements多个接口。

java 抽象属性 get java抽象数据类型的定义_抽象类_02

(2)抽象类的特性

  • 方法可以是public或private
  • 可以有任何类型的变量
  • 无法实例化
  • 默认情况下,方法是具体的(需要写实现内容),除非指定为 abstract(不写实现内容)
  • 每个类只能extends一个抽象类

java 抽象属性 get java抽象数据类型的定义_java 抽象属性 get_03

注意:
抽象类不一定要实现所继承的接口中的方法,甚至不一定要列出来,相当于抽象类默认继承了接口中的抽象方法。

5. Packages

包名称为所有内容提供了唯一名称。
使用import导入包,就可以使用其中的类。