泛型

TypeScript-初级-07-泛型

﹥>﹥吖頭↗ 提交于 2019-12-03 15:21:26
泛型 泛型(Generics)是指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性。 简单的例子 首先,我们来实现一个函数 createArray ,它可以创建一个指定长度的数组,同时将每一项都填充一个默认值: function createArray(length: number, value: any): Array<any> { let result = []; for (let i = 0; i < length; i++) { result[i] = value; } return result; } createArray(3, 'x'); // ['x', 'x', 'x'] 上例中,我们使用了之前提到过的数组泛型来定义返回值的类型。 这段代码编译不会报错,但是一个显而易见的缺陷是,它并没有准确的定义返回值的类型: Array<any> 允许数组的每一项都为任意类型。但是我们预期的是,数组中每一项都应该是输入的 value 的类型。 这时候,泛型就派上用场了: function createArray<T>(length: number, value: T): Array<T> { let result: T[] = []; for (let i = 0; i < length; i++) { result[i] = value;

泛型,List,表之间的转换

ぃ、小莉子 提交于 2019-12-03 14:33:11
class BB { public int ID { get; set; } public string Name { get; set; } public int Age { get; set; } //DataTable转为list public List<T> Get<T>(DataTable dt) where T : new() {   List<T> list = new List<T>();   foreach (DataRow item in dt.Rows)   {     T t = new T();     //给属性赋值     Type tt = typeof(T);     var ps = tt.GetProperties();//获取属性      //循环输出     foreach (var ite in ps)     {       ite.SetValue(t, item[ite.Name]);      }      list.Add(t);   }   return list; } //list转为DataTable public DataTable Get<T>(List<T> list) where T : new() {   DataTable dt = new DataTable();   Type type = typeof

Java 泛型

爱⌒轻易说出口 提交于 2019-12-03 12:18:53
Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。 假定我们有这样一个需求:写一个排序方法,能够对整型数组、字符串数组甚至其他任何类型的数组进行排序,该如何实现? 答案是可以使用 Java 泛型 。 使用 Java 泛型的概念,我们可以写一个泛型方法来对一个对象数组排序。然后,调用该泛型方法来对整型数组、浮点数数组、字符串数组等进行排序。 泛型方法 你可以写一个泛型方法,该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。 下面是定义泛型方法的规则: 所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前(在下面例子中的<E>)。 每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。 类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。 泛型方法体的声明和其他方法一样。注意类型参数只能代表引用型类型,不能是原始类型(像int,double,char的等)。 实例 下面的例子演示了如何使用泛型方法打印不同字符串的元素: 实例

TypeScript开发实战

♀尐吖头ヾ 提交于 2019-12-03 12:07:38
课程目录: 01、重塑“类型思维” 02、类型基础(1):强类型与弱类型 03、类型基础(2):动态类型与静态类型 04、编写你的第一个TypeScript程序 05、基本类型 06、枚举类型 07、接口(1):对象类型接口 08、接口(2):函数类型接口 09、函数 10、类(1):继承和成员修饰符 11、类(2):抽象类与多态 12、类与接口的关系 13、泛型(1):泛型函数与泛型接口 14、泛型(2):泛型类与泛型约束 15、类型检查机制(1):类型推断 16、类型检查机制(2):类型兼容性 17、类型检查机制(3):类型保护 18、高级类型(1):交叉类型与联合类型 19、高级类型(2):索引类型 20、高级类型(3):映射类型 21、高级类型(4):条件类型 22、ES6与CommonJS的模块系统 23、使用命名空间 24、理解声明合并 25、如何编写声明文件 26、配置tsconfig.json(1):文件选项 27、配置tsconfig.json(2):编译选项 28、配置tsconfig.json(3):工程引用 29、编译工具:从ts、loader到Bable 30、代码检查工具:从TSLint到ESLint 31、使用Jest进行单元测试 32、创建项目 33、组件与类型(1):函数组件与类组件 34、组件与类型(2):高阶组件与Hooks 35

Collection、泛型

我是研究僧i 提交于 2019-12-03 11:48:34
集合与数组的区别 区别: 1.数组的长度是固定的,集合的长度是可变的. 2.数组中储存的都是同一类型的元素,可以储存基本数据类型(引用数据类型).集合存储的都是对象.而且对象类型可以不一致,在开发中一般当对象多的时候,使用集合进行存储. Collection集合的常用功能 什么是Collection集合? Collection集合是 单类集合的根接口,用于存储一系列符合某种规则的元素它有两个重要的子接口,分别是 java.util.List 和 java.util.Set 。其中, List 的特点是元素有序、元素可重复.Set 的特点是元素无 序,而且不可重复。 List 接口的主要实现类有 java.util.ArrayList 和 java.util.LinkedList , Set 接口的主要实现类有 java.util.HashSet 和 java.util.TreeSet Collection常用功能: public boolean add(E e) :把对象添加到当前集合中. public void clear (): 清空当前集合 public boolean remove(): 把给定的对象在当前集合中删除 public boolean contains(E e): 判断当前集合中是否有该元素. public boolean isEmpty(): 判断集合是否为空

Java基础 Collection、泛型

淺唱寂寞╮ 提交于 2019-12-03 11:48:16
主要内容 Collection集合 迭代器 增强for 泛型 教学目标 能够说出集合与数组的区别 说出Collection集合的常用功能 能够使用迭代器对集合进行取元素 能够说出集合的使用细节 能够使用集合存储自定义类型 能够使用foreach循环遍历集合 能够使用泛型定义集合对象 能够理解泛型上下限 能够阐述泛型通配符的作用 第一章 Collection集合 1.1 集合概述 在前面基础班我们已经学习过并使用过集合ArrayList ,那么集合到底是什么呢? 集合:集合是java中提供的一种容器,可以用来存储多个数据。 集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的。集合的长度是可变的。 数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。 1.2 集合框架 JAVASE提供了满足各种需求的API,在使用这些API前,先了解其继承与接口操作架构,才能了解何时采用哪个类,以及类之间如何彼此合作,从而达到灵活应用。 集合按照其存储结构可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.Map,今天我们主要学习Collection集合,在day04时讲解Map集合。 Collection:单列集合类的根接口

** Collection、泛型 [Java提升_day02] *

旧巷老猫 提交于 2019-12-03 11:46:34
day02【Collection、泛型】 主要内容 Collection集合 迭代器 增强for 泛型 教学目标 能够说出集合与数组的区别 说出Collection集合的常用功能 能够使用迭代器对集合进行取元素 能够说出集合的使用细节 能够使用集合存储自定义类型 能够使用foreach循环遍历集合 能够使用泛型定义集合对象 能够理解泛型上下限 能够阐述泛型通配符的作用 第一章 Collection集合 1.1 集合概述 在前面基础班我们已经学习过并使用过集合ArrayList ,那么集合到底是什么呢? 集合 :集合是java中提供的一种容器,可以用来存储多个数据。 集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的。集合的长度是可变的。 数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。 1.2 集合框架 JAVASE提供了满足各种需求的API,在使用这些API前,先了解其继承与接口操作架构,才能了解何时采用哪个类,以及类之间如何彼此合作,从而达到灵活应用。 集合按照其存储结构可以分为两大类,分别是单列集合 java.util.Collection 和双列集合 java.util.Map ,今天我们主要学习 Collection 集合,在day04时讲解 Map 集合。

Java集合(一)之Collection,泛型

情到浓时终转凉″ 提交于 2019-12-03 11:45:57
Java集合【Collection、泛型】 主要内容 Collection集合 迭代器 增强for 泛型 第一章 Collection集合 1.1 集合概述 数组到集合ArrayList ,实现集合长度可变 集合 :集合是java中提供的一种容器,可以用来存储多个数据。 集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的。集合的长度是可变的。 数组中存储的是同一类型的元素,可以存储基本数据类型值,也可以存储对象。集合存储的都是对象,不能存储基本数据类型,而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。 1.2 集合框架 学习顶层:学习顶层接口/抽象类中共性的方法,所有子类都可以使用 使用底层:顶层不是接口就是抽象类,无法创建对象使用,需要使用底层的子类创建对象使用 集合按照其存储结构可以分为两大类,分别是单列集合 java.util.Collection 和双列集合 java.util.Map 。 Collection :单列集合类的根接口,用于存储一系列符合某种规则的元素,定义的是所有单列表集合中的共性方法,没有带索引的方法。 Collection 有两个重要的子接口,分别是 java.util.List 和 java.util.Set 。其中, List 接口的特点是元素有序、元素可重复、有索引可以使用普通的for循环遍历。 Set

Java 的泛型擦除

江枫思渺然 提交于 2019-12-03 11:39:45
说到泛型,就不得说起“擦除”这个概念,相比于c#来说,java的泛型只存在于程序的源码中,在编译后的class文件中不存在,这个过程就是--泛型"擦除";所以,对于new ArrayList<String> 和 new ArrayList<Integer> 来说,两个对象在编译之后两者是一样的,通过反射均可以向集合中添加任意类型的对象; 编译前: public static void main(String[] args) { Class c1 = new ArrayList<String>().getClass(); Class c2 = new ArrayList<Integer>().getClass(); System.out.println(c1 == c2); } 编译后: public static void main(String[] args) { new ArrayList(); new ArrayList(); } 可以看到,在编译后的class文件中,ArrayList所声明的泛型不存在了;由此可知,如果想在程序运行期间获取泛型,看似是一件不可能完成的事情! Map<Integer, Long> map = new HashMap<>(); map.put(0, 0L); map.put(1, 1L); String a = JSON

20182327 2019-2020-1 《数据结构与面向对象程序设计》第八周学习总结

拜拜、爱过 提交于 2019-12-03 10:46:09
20182327 2019-2020-1 《数据结构与面向对象程序设计》第八周学习总结 教材学习内容总结 1、 查找算法的总结 - 线性查找,通过依次遍历所要查找元素的集合,比较是否存在所需查找的元素,直到找到该元素或返回false表明集合不存在该元素。实现较为简单,==但当集合元素数量巨大时,效率极慢==。 - - 二分法查找,通过每次将集合分为两部分,比较所需查找的元素位于中间元素的左半区还是右半区,依次进行二分,直至找到元素,或返回false。效率较高,例如,一个含义一百万元素的集合,只需20次左右即可完成查找。==但二分法的实现需要基于一个有序数组,否则无法实现。== 2、排序算法的总结 - 顺序排序——选择排序法,选择排序法每遍历列表依次,找到当前最小元素,将其与列表左侧元素交换,最终将所有元素进行排序。 - - 顺序排序——插入排序法,从最左侧元素开始,与其余元素比较,产生一个初步的排序子集,每当下一个比较的元素小于排序子集的最右元素时,经过与子集元素比较,将其插入到子集的顺序位置。子集不断向右与剩余元素进行比较,直至完成排序。 - - 顺序排序——冒泡排序,将列表中的元素,从左端开始,两个元素比较大小,若左大右小,两个交换位置,一直往复,将最大元素置于最右位置。每次排序都将当前最大的交换到最右 - 快速排序,使用递归的思想。以一个元素为界限,小在左,大在右