17 System.out.println("————————————————————————————————————————————————"); // 从指定的位置开始查找...("————————————————————————————————————————————————"); // 查找所有“Day”出现的位置并打印出来 pos =...s1.indexOf("Day"); while (pos !... System.out.println(pos); // pos++; pos += "Day".length();//优化了运算,跨过“day”的3...//从指定的字符串下标位置开始从后往前返回值 pos = s1.lastIndexOf("good"); System.out.println(pos);
类(Class) 与类型(Type) Kotlin 中类和类型是不一样的概念。 下图充分展示了它们的区别。 ? class vs type.png 二. 型变 型变是指类型转换后的继承关系。...2.1.3 @UnsafeVariance 但是,Kotlin List 的 contains、containsAll、indexOf 和 lastIndexOf 方法中,入参均出现了范型 E。...如果参数化类型是一个生产者,则使用 ;如果它是一个消费者,则使用 。 其中,生产者表示频繁往外读取数据 T,而不从中添加数据。...消费者表示只往里插入数据 T,而不读取数据。 2.2.2 Kotlin 的关键词 in in相当于 Java 下界通配符。...2.3 不变 默认情况下,Kotlin 中的泛型类是不变的。 这意味着它们既不是协变的也不是逆变的。 例如 MutableList,它可读可写,泛型没有使用in、out。 三.
一、构造函数和初始化块 1.初始化块 2.主构造函数 3.次构造函数 4.他们之间的联系 二、属性 1.属性的声明 2.避免递归调用的幕后字段 三、常用的类 一、构造函数和初始化块 1.初始化块 代码的初始化工作由它负责...,在调用主构造函数之前执行,这部分理论上可以进行任何工作,但建议类的初始化赋值可以放在这,其余的最好由其他专门的地方处理,采用init关键字 init{ println("ww cool") }...2.主构造函数 主构造函数只能由一个,初始化块相当于放在主构造函数的无参函数中,按顺序执行初始化块,这一点和传统的面向对象编程中的主构造函数没有太大的区别。...(name:String){ } 3.次构造函数 同样使用constructor关键字作为函数名,但它不能省略函数名,使用时需要调用主构造函数 class MyClass constructor...和getter,所以不用这么担心 三、常用的类 抽象类 含有抽象方法的类称为抽象类,这一点和java里面很像 内部类 使用inner关键字,可以访问内部类外的属性 class outer{ val
Java 的委托模式 实际上 Kotlin 的这种语法虽然比较新,但它背后的设计模式是早就有了的,叫做「委托模式」。...它可以让实现类不用关心接口的核心功能的具体实现,而只要关注额外的功能定制和扩展。什么意思?...我们再举个例子,比如对于 Java 的 List 这个接口,我们可以用 ArrayList 和 LinkedList 这两个类对它做出不同的内部实现,去应对不同的性能需求。...而如果我想给 List 接口定制额外的功能,比如我想定制一个元素类型是 User 的 List,让它有各种和用户相关的功能,像「筛出高风险用户」、「按年龄重排」这样的,那么我应该继承 ArrayList...也就是,我扩展出来的功能对 ArrayList 和 LinkedList 都是适用的。对吧?通过这种写法,我就可以对接口进行功能扩展,而不需要关心接口的核心功能是怎么实现的。很自由很方便。
在Kotlin语言中,类体部分 枚举 方法体,条件语句中的条件执行体,与循环语句的循环体也都放在代码块中。 (2) 标识符的规则 区分大小写:Myname 与 myname 是两个不同的标识符。...在 Kotlin 语言中有两个由编译器定义的特定标识符,它们只能在特定场景中使用有特定的作用,而在其他的场景中可以做标识符使用。...字符串转为其他类型数据Kotlin与Java方式对比 (2)字符串的常用方法 Kotlin方法基本兼容Java相关的方法,比如查找指定位置的字串indexOf方法,截取某指定位置字串的方法substring...(0,text.indexOf(".")) } split方法的使用,在java中split返回的是Sting数组,但是在Kotlin中split返回的则是Sting类型的队列,List...在Kotlin中也可以通过下标的方式获取对应的元素,不过Kotlin要比Java多出两个方法 get set,通过get获取元素的值,通过set方法修改元素值,感觉就像在操作ArrayList队列一样
EnumMap 和 EnumSet EnumMap和EnumSet是专门为枚举类型设计的集合类。...迭代器模式则更安全,可以避免在遍历过程中修改集合。Java 8的流提供了一种强大的数据处理方式,允许进行复杂的操作,如过滤、映射和聚合。...线程安全和并发集合 在多线程环境中,线程安全是一个重要的考虑因素。 非线程安全集合 标准集合类(如ArrayList、HashMap等)不是线程安全的。...设计模式中集合的使用 在设计模式中,集合经常被用来实现如工厂模式、策略模式等。 工厂模式 使用集合存储不同类型的对象,可以方便地实现工厂模式。...数据过滤和映射 使用Stream API可以轻松地对集合中的数据进行过滤和映射。
先来看看面试官的描述: “如何在Integer类型的ArrayList中同时添加String、Character、Boolean等类型的数据呢?” 看到这里,你是不是想到下面的代码?...在程序中,通常不会自定义该类异常,而是直接使用系统提供的异常类。 看完了Java的异常体系,我们知道上面代码出现的异常为编译时异常,是必须要处理的,否则无法通过编译阶段,更不要谈运行了。...其中,参数parameter为全限定类名(即:包名+类名),如:com.cya.test.Test。...(不包括继承的) 通过反射创建对象: java中,除了使用new关键字创建对象外,也可以用newInstance()方法创建对象,例如: Class class1 = Class.forName("java.util.ArrayList...2、使用对象名.getClass()方法获取Class对象。 3、调用getMethod()方法获取指定的Method。 4、调用invoke()方法将不同数据类型的数据添加到list集合中。
简介 ArrayList 可以理解为是一个长度可变的集合,在日常开发中使用也比较频繁,这里不写与java中的ArrayList的区别,只单纯的介绍Kotlin中的ArrayList。...创建一个被元素集合填充的ArrayList ArrayList(elements: Collection) 参数 size 该集合的大小 open val size: Int modCount...E) //将指定元素添加到集合中 open fun add(element: E): Boolean addAll //将指定集合中的所有元素全部添加到该集合的指定位置 open fun addAll...fun get(index: Int): E indexOf //返回该元素在集合中第一次出现的位置,如果不存在则返回-1 open fun indexOf(element: E): Int lastIndexOf...//与`indexOf`相似,返回该元素在集合中最后一次出现的位置,如果不存在则返回-1 open fun lastIndexOf(element: E): Int remove //去掉该集合中的指定元素
Kotlin 数据类 ( data class ) III ....Kotlin 数据类 ( data class ) ---- 1 ....数据类介绍 : Kotlin 中 data class 类能快速帮助开发者封装 各种类型的数据 , 编译后生成的 JavaBean 只生成最基本的几个函数 , 如 hashCode() , toString...数据类型 ( data class ) 定义 : ① 参数格式 : 定义数据类时需要将要封装的字段写在构造函数中 , 格式如下 : var / val 变量名 : 变量类型 ② 参数要求 : 构造函数必有...JavaBean 参考 : 上面定义的 Kotlin 数据类 , 与下面的 JavaBean 基本一致 , 实现的那一串方法就算了 ; public class Student { private
5.1 集合类是什么 5.1.2 集合类是一种数据结构 在讲 Kotlin 的集合类之前,为了更加深刻理解为什么要有集合类,以及集合类到底是怎么一回事,让我们先来简单回顾一下编程的本质: 数据结构 +...顺序存储是使用元素在存储器中的相对位置来表示数据元素之间的逻辑关系; 链式存储使用指示元素存储位置的指针(pointer)来表示数据元素之间的逻辑关系。 数据的处理运算。...ADT加上继承、重载和多态性就是现代OOP编程范式中的类的概念了。我们简称类为广义ADT的概念。...由于数组是连续存储的,在操作数组中的数据时就可以根据离首地址的偏移量直接存取相应位置上的数据,但是如果要在数据组中任意位置上插入一个元素,就需要先把后面的元素集体向后移一位为其空出存储空间。...5.4.3 使用Java中的Set类 包kotlin.collections下面的TypeAliases.kt类中,有一些类型别名的定义如下: @file:kotlin.jvm.JvmVersion
比如使用Java查询song表中id为1的这条记录是这样写的: Song song = LitePal.find(Song.class, 1); 而同样的功能在Kotlin中却需要这样写: val song...这样的话也就不存在什么泛型擦除的问题了,因为Kotlin在编译之后会直接使用实参替代内联方法中泛型部分的代码。 简单点来说,就是Kotlin是允许将内联方法中的泛型进行实化的。...T.class这样的语法在Java中是不可能的,而在Kotlin中借助泛型实化功能就可以使用T::class.java这样的语法了。...而通过刚才泛型实化部分的讲解,我们知道Kotlin中是可以使用T::class.java这样的语法的,因此我在LitePal 3.0.0中扩展了这部分特性,允许通过指定泛型来声明查询哪张表中的内容。...想要删除song表中id为1的这条数据可以这么写: LitePal.delete(1) 想要统计song表中的记录数量可以这么写: val count = LitePal.count<Song
,直接调用setRoundRectBg即可,简单方便 reified使用 reified,kotlin中的泛型实化关键字,使抽象的东西更加具体或真实。...reified,通过添加类型传递简化泛型参数 这样就不用手动传泛型的类型过去了 Gson解析例子 我们首先看下一般我们使用gson解析json是怎么做的 在Java序列化库(如Gson)中,当您想要反序列化该...类委托 举个例子,当我们要实现一个增强版的ArrayList,支持恢复最后一次删除的item 实现这个用例的一种方式,是继承 ArrayList 类。...由于新的类继承了具体的 ArrayList 类而不是实现 MutableList 接口,因此它与 ArrayList 的实现高度耦合。...比如,本文提到的 Kotlin DSL,我们为 Kotlin DSL 做一个简单的定义: “使用 Kotlin 语言开发的,解决特定领域问题,具备独特代码结构的 API 。”
举个栗子:// 创建可以保存任何数据类型的ArrayListArrayList a = new ArrayList();a.add("1");a.add(0);a.add(new BigDecimal...Double b = (Double) obj; System.out.println(b.getClass()); } else { String b = "未检测到数据类型..."; System.out.println(b.getClass()); }}使用比较少,特此记录下
1、问题描述 “如何在 Integer 类型的 ArrayList 中同时添加 String、Character、Boolean 等类型的数据?” 你是不是想到下面的代码?...在程序中,通常不会自定义该类异常,而是直接使用系统提供的异常类。 看完了Java的异常体系,我们知道上面代码出现的异常为编译时异常,是必须要处理的,否则无法通过编译阶段,更不要谈运行了。...这种方式是最常用的,在各类框架的配置文件中可以看到,如:Spring、SpringMVC、Mybatis 等等。...其中,参数 parameter 为全限定类名(即:包名+类名),如:com.cya.test.Test。...调用 invoke() 方法将不同数据类型的数据添加到 list 集合中。
NoArg和AllOpen 数据类本身属性没有默认的无参数的构造方法,因此Kotlin提供一个NoArg插件,支持JPA注解,如@Entity。...AllOpen是为所标注的类去掉final,目的是为了使该类允许被继承,且支持Spring注解,如@Componet;支持自定义注解类型,如@Poko。...;协变和逆变由Java中的extends和super变成了out和in,如ArrayList;在Kotlin中没有Raw类型,如Java中的List对应于Kotlin就是List。...Java 平台上,数组会使用原生数据类型以避免装箱/拆箱操作的开销。 由于 Kotlin 隐藏了这些实现细节,因此需要一个变通方法来与 Java 代码进行交互。...首先使用Java创建一个SAMInJava类,然后通过Kotlin调用Java中的接口。
⑤ NoArg和AllOpen 数据类本身属性没有默认的无参数的构造方法,因此Kotlin提供一个NoArg插件,支持JPA注解,如@Entity。...AllOpen是为所标注的类去掉final,目的是为了使该类允许被继承,且支持Spring注解,如@Componet;支持自定义注解类型,如@Poko。...;协变和逆变由Java中的extends和super变成了out和in,如ArrayList;在Kotlin中没有Raw类型,如Java中的List对应于Kotlin就是List使用Java创建一个SAMInJava类,然后通过Kotlin调用Java中的接口。...④ 静态方法 Kotlin将包级函数表示为静态方法。如果对这些函数使用@JvmStatic进行标注,那么Kotlin还可以为在命名对象或伴生对象中定义的函数生成静态方法。
--------------------------------------- Java中数据类型的分类: 基本数据类型:4类8种。...注意:字符串、Lambda这两种引用数据类型后面会学习到。 --------------------------------------- Java中如何使用引用数据类型中的类呢?...如果希望使用引用类型中的“类”,那么典型用法的一般步骤为: 例如:使用Java中JDK已经写好的扫描器类 Scanner。 步骤1:导包。 指定需要使用的目标在什么位置。...引用数据类型一般需要创建对象才能使用,格式为: 数据类型 变量名称 = new 数据类型(); 例如: Scanner sc = new Scanner(System.in);...需要使用什么功能,就点儿一个功能名称(方法名),格式为: 变量名称.方法名(); 例如: a:获取键盘输入的int数字 int num = sc.nextInt()
在 SQL 中,可以使用聚合函数来计算数据的总和、平均值和数量。以下是一些常用的聚合函数的示例: SUM 函数:计算指定列的总和。...SELECT SUM(column_name) FROM table_name; AVG 函数:计算指定列的平均值。...SELECT AVG(column_name) FROM table_name; COUNT 函数:计算指定列的数量。...SELECT MIN(column_name) FROM table_name; MAX 函数:返回指定列的最大值。...SELECT MAX(column_name) FROM table_name; 注意:这些聚合函数可以与其他 SQL 查询语句一起使用,例如 WHERE 子句来过滤数据,或者 GROUP BY 子句来分组计算
本文主要是介绍如何在CDH中使用Solr对HDFS中的json数据建立全文索引。...2.在Solr中建立collection,这里需要定义一个schema文件对应到本文要使用的json数据,需要注意格式对应。...Morphline可以让你很方便的只通过使用配置文件,较为方便的解析如csv,json,avro等数据文件,并进行ETL入库到HDFS,并同时建立Solr的全文索引。...对数据进行ETL,最后写入到solr的索引中,这样就能在solr搜索引擎中近实时的查询到新进来的数据了由贾玲人。"...,必须指定唯一键(uniqueKey),类似主键,唯一确定一行数据,我们这里的示例demo使用的是json中的id属性项。
猫头虎 分享:如何在服务器中Ping特定的端口号? 网络调试的实用技巧,学会这些工具,你将成为运维与开发中的“Ping”王!...在日常开发和运维中,我们经常需要检查目标主机上的某个端口是否开启,并确定网络连通性。...使用 Telnet Ping 端口 Telnet 是检查端口连通性的经典工具,虽然简单,但功能强大。...用法示例: 测试目标主机端口(以 example.com:80 为例): nc -zv example.com 80 参数解析: -z:扫描模式(不传输数据)。 -v:显示详细信息。...使用 nmap Ping 端口 Nmap 是一款专业的网络扫描工具,适合批量测试。
领取专属 10元无门槛券
手把手带您无忧上云