首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin开发如何使用集合详解

关于 Kotlin 开发 使用 Kotlin 开发 Android App 在 Java 工程师群体变得越来越流行。如果你由于某些原因错过了 Kotlin,我们强烈建议你看一下这篇文章。...对于那些处在技术前沿和喜欢 Kotlin 开发者来说,本篇文章和他们息息相关。所以,下面就让我们来看一下怎样在 Kotlin使用集合吧。 Kotlin集合是基于 Java 集合框架。...数据处理 Kotlin 中有一个拓展函数特性,这个特性可以使 Kotlin 标准库(stdlib)支持 JDK 方法。...我们可以看到,我们在 Kotlin 几乎可以使用 Java CollectionsKT 类所有方法.当然,也需要导入 java.util.* 。...Kotlin 集合是如何使用 Java List 。

2.6K10
您找到你想要的搜索结果了吗?
是的
没有找到

技巧:遵循Clean Architecture写好白盒测试

换句话说,该类越复杂,我们就需要编写越多mock代码。 目前我们业务和框架是紧耦合,那么我们测试需要将框架行为一同考虑进去。同时也意味着框架行为变动(如升级),测试用例需要大量变更。...") }) assertEquals(1, resultMap.keys.toSet().size, "当前数据,应该被分为3组——根据主键分发原则,他们来自于不同主键")...assertEquals(1, resultMap.size, "当前数据,应该被分为3组——根据主键分发原则,他们来自于不同主键") val umsList = resultMap.values.map...其实这很像面向对象Strategy模式——定义一个算法接口,并将每一种算法都在这个接口下实现其逻辑,令同一个类型算法能够互换使用。这样做好处是算法变化不影响使用方,也不受使用影响。...而如果函数是一等公民的话,则会让建立和操纵各种策略工作变得十分简单。 那么怎样算是不简单呢?

14110

阿里开源新一代单元测试 Mock 工具!

方法一:使用`@EnablePrivateAccess`注解 只需为测试类添加@EnablePrivateAccess注解,即可在测试用例获得以下增强能力: 调用被测类私有方法(包括静态方法) 读取被测类私有字段...(包括静态字段) 修改被测类私有字段(包括静态字段) 修改被测类常量字段(使用final修饰字段,包括静态字段) 访问和修改私有、常量成员,IDE可能会提示语法有误,但编译器将能够正常运行测试。...(使用编译期代码增强,目前仅实现了Java语言适配) 效果见java-demo示例项目DemoPrivateAccessTest测试类用例。...方法二:使用`PrivateAccessor`工具类 若不希望看到IDE语法错误提醒,或是在非Java语言JVM工程(譬如Kotlin语言)里,也可以借助PrivateAccessor工具类来直接访问私有成员...这个类提供了6个静态方法: PrivateAccessor.get(被测对象, "私有字段名") ➜ 读取被测类私有字段 PrivateAccessor.set(被测对象, "私有字段名", 新值)

1.1K20

阿里开源新一代单元测试 Mock 工具!

方法一:使用@EnablePrivateAccess注解 只需为测试类添加@EnablePrivateAccess注解,即可在测试用例获得以下增强能力: 调用被测类私有方法(包括静态方法) 读取被测类私有字段...(包括静态字段) 修改被测类私有字段(包括静态字段) 修改被测类常量字段(使用final修饰字段,包括静态字段) 访问和修改私有、常量成员,IDE可能会提示语法有误,但编译器将能够正常运行测试。...(使用编译期代码增强,目前仅实现了Java语言适配) 效果见java-demo示例项目DemoPrivateAccessTest测试类用例。...方法二:使用PrivateAccessor工具类 若不希望看到IDE语法错误提醒,或是在非Java语言JVM工程(譬如Kotlin语言)里,也可以借助PrivateAccessor工具类来直接访问私有成员...这个类提供了6个静态方法: PrivateAccessor.get(被测对象, "私有字段名") ➜ 读取被测类私有字段 PrivateAccessor.set(被测对象, "私有字段名", 新值)

89520

Junit | 不会写单元测试,就如同不穿秋裤熊孩子在冬天瞎跑

在我以往Android开发生涯,几乎没有使用过单元测试,也没有见过有人去介绍过,好像这个东西在国内开发者眼里并不是很重要,或者说大多数开发同学没有专门时间去使用单元测试框架,也许更重要原因应该是我个人孤陋寡闻...: 方法名 方法描述 assertEquals 断言传入预期值与实际值是相等 assertNotEquals 断言传入预期值与实际值是不相等 assertArrayEquals 断言传入预期数组与实际数组是相等...=” assertThat 断言实际值是否满足指定条件 注意 上面的所有方法,都有对应重载方法,可以在前面加一个 String 类型参数,表示断言失败提示。...str.first)) } } 注意:相应 @Parameterized.Parameters 方法在Kotlin使用需要增加 @JvmStatic 。...使用过程,这种参数化测试如果我们没有加错误提示,寻找问题可能不容易找到那个测试用例出了问题,所以这点也需要注意。 assertThat用法 用于为断言失败后输出信息提高可读性。

73350

分布式 | DBLE 3.21.06.0 来了!

主要缺陷修复: [#2622] set autocommit 没有按预期工作。 [#2638] 开着慢日志,dble 可能会出现 oom。...[#2819] 使用读写分离事务失败问题,感谢 @boying52 报告错误。 [#2728] 检查表一致性问题,感谢 @lenovore 报告错误。 有时复杂查询可能会导致线程泄漏。...可能会出现 oom 3.20.10.5 复杂查询可能导致线程泄漏 开着慢日志,dble 可能会出现 oom 检查表一致性问题 读写分离 com_stmt_prepare 返回报文次序错误 set autocommit...未按预期执行 偶现 ArrayIndexOutOfBoundException 3.21.02.2 复杂查询可能导致线程泄漏 开着慢日志,dble 可能会出现 oom 检查表一致性问题 读写分离...com_stmt_prepare 返回报文次序错误 set autocommit 未按预期执行 偶现 ArrayIndexOutOfBoundException sql 统计相关修复 使用读写分离事务失败问题

2.7K20

【翻译】忘了RxJava吧——你需要是拥抱Kotlin协程(Part 12)

,但这并不意味着它就一定要作为管理异步工作工具。...但是这里有几个隐藏缺陷: 性能开销问题 这段代码每一行都会生成一个内部对象(或者好几个)来完成这项工作。...这看上去根本没有产生异步嘛 :) ,顺便说一下,在 RxJava 版本,我们把订阅器添加到 compositeDisposable 以方便在 onStop() 调用它 dispose() 方法。...("name", githubUser.name) Assert.assertEquals("url", githubUser.reposUrl) } } } 在这里我使用是 KHttp...概要 好吧,在这里我们设法重构一些使用了 Singles 代码,替换为 Kotlin 协程并从中感受到一些好处。在此系列下一章节,我们将考虑使用协程来处理比 RxJava 更高级一些主题。

1.1K20

为什么我们要尝试Kotlin

- 简洁 Concise Kotlin简洁体现在很多方面,对于Java程序员来说,最直接体现便是在Kotlin语法中直接省略了分号,并且在构造一个类实例省略了new关键字,下面便是一段标准Kotlin...} 例子是项目上一个用Kotlin编写基于Spring JPARepository,可以看到得益于Interoperable特性,在尝试使用Kotlin我们可以依赖是一个完整Java生态圈...这样你可以不用担心尝试Kotlin为你业务代码带来风险,同时也可以在编写单元测试过程尝试Kotlin语言各种特性。...使用Kotlin来扩展 你还可以使用Kotlin来丰富项目中所用到Library,使用Kotlin Extensions来在不需要继承情况下完成对原有类型扩展。...new KPerson("Foo", "Bar", Gender.MALE, 18); assertEquals("Foo Bar", Extensions.fullName(k)); } 使用Kotlin

86950

【Java 基础篇】Java JUnit 使用详解

单元测试是一种软件测试方法,用于验证应用程序最小代码单元(通常是一个函数、方法或类)是否按照预期工作。单元测试目的是隔离代码不同部分并确保它们在独立测试按照规范运行。...assertEquals:JUnit断言方法之一,用于验证预期值和实际值是否相等。 assertThrows:JUnit断言方法之一,用于验证是否抛出了预期异常。...注意事项 在使用JUnit进行单元测试,有一些注意事项和最佳实践,以确保测试准确性和可维护性。以下是一些常见JUnit使用注意事项: 命名规范:使用有意义命名来标识测试方法和测试类。...每个测试方法应该在一个干净环境运行,不受其他测试方法影响。 注释和文档:为测试方法和测试类添加清晰注释和文档,以解释测试目的和预期行为。这将有助于其他开发人员理解测试意图。...使用assertThrows来验证是否抛出了预期异常。

1K20

Akka 指南 之「第 5 部分: 查询设备组」

以下工作对于我们用例是很有用: 当查询到达,组 Actor 将获取现有设备 Actor 快照(snapshot),并且只向这些 Actor 询问温度。...在这个简单例子,没有那么多。当你突然有更多状态,这种状态保持价值变得更加明显。...我们需要单独测试各种场景,以确保一切都按预期工作。为了能够做到这一点,我们需要以某种方式模拟设备 Actor 来运行各种正常或故障场景。...(expectedTemperatures, response.temperatures); } 查询功能已经按预期工作了,现在是时候在DeviceGroup Actor 添加这个新功能了。...向设备组添加查询功能 现在在设备组 Actor 包含查询功能相当简单。我们在查询 Actor 本身完成了所有繁重工作,设备组 Actor 只需要使用正确初始参数创建它,而不需要其他任何参数。

1.1K20

如何对Spring MVCController进行单元测试

具体来讲,是由Spring框架spring-test模块提供实现,详见MockMvc。...断言响应结果,有2种方式: 1.使用JUnit提供Assert断言工具判断返回结果,这是一种非常普遍和常见方式 2.在MockMvc框架可以通过andExpect()方法定义一个或多个预期结果...,当其中一个期望结果断言失败,就不会断言其他期望值了 // 使用Junit断言工具判断返回结果是否符合预期 @Test public void testAssertResult() throws Exception...("OK", result.getResponse().getContentAsString()); } // 在MockMvc框架定义预期结果 @Test public void testExpectations...写在最后 使用Spring提供测试框架MockMvc可以非常方便地实现对HTTP服务接口进行单元测试,不要把基础功能验证工作都交给测试童鞋,应该通过单元测试来保证代码迭代稳定性。

2.1K30

开发必备之单元测试

为了发现代代码潜在错误 我们需要在编写测试用例时有一些强制错误输入(如非法数据、异常流程、非业务允许输入等)来得到预期错误结果。...对于特别复杂条件判定,直接使用任何一种断言方法都不容易表达,则可以使用 Java 语句自行构造条件,然后在不符合预期情况下直接使用 fail 断言方法将测试标记为失败。...另外值得强调是,对于所有两参数断言方法,例如 assertEquals、assertSame 第一个参数是预期结果值,第二个参数才是实际结果值。... set = map.keySet(); Assertions.assertEquals(3, set.size()); Assertions.assertTrue...(set.containsAll(Arrays.asList("A","B","C"))); } } 下面,我们使用 AssertJ来完成同样断言: /** * 使用AssertJ断言

12610

Room 🔗 Coroutines

请继续阅读以了解如何使用它、引擎内部工作原理以及如何测试该项新功能。 目前,Coroutines 对 Room 支持正在大力开发,该库未来版本中将会增加更多特性。...给你数据库添加 suspense 特性 为了在你 app 中使用协程和 Room,需将 Room 升级为 2.1 版本并在 build.gradle 文件添加新依赖: implementation...由于 suspend 方法只能在其他 suspend 方法或协程调用,因此需确保你使用 Dispatcher 是 Dispatchers.IO 或自定义,而不是 Dispatcher.Main。...该 Dispatcher 是基于使处于后台工作 LiveData 运行起来同一 I/O Executor 而创建。 测试 DAO 挂起方法 测试 DAO 挂起方法与测试其他挂起方法一般无二。...生成代码传入了一个 continution 和待插入数据。使用了和同步插入方法相同逻辑,不同是它在一个 Callable#call 方法执行。

92110

为什么我会选择Vert.x与Kotlin

这也是笔者在整理myddd-backend框架为什么选择基于Spring Boot来实现原因所在。因为笔者相信它能适合大多数团队。...进入2021年,笔者觉得需要重新关注下后端技术,以思考是否需要选择新技术做为笔者后端技术解决方案,之所以有这种想法,也是基于以下几个原因 在使用Spring Boot过程,仍然感觉它非常中规中矩,...事实上,在Google推动下,Kotlin被人接受程度越来越高,使用程序员也越来越多了。 传统Java语言及阻塞式编程并无问题,笔者认为它仍是大多数团队与公司第一选择。...如笔者在一个Electron桌面开发代码,是这样使用异步 本代码摘自笔者基于Electron开发一个跨平台桌面软件 public static async syncFavors():...,在Kotlin代码,比Java实现好很多。

1.3K10

细节之处见真章 - 请求对象 trim 最佳实践

一、背景 日常开发,经常需要对前端传入请求对象(如 StudentQueryVO)某些属性执行 trim 操作,比如搜索关键字、输入名称等。...trim query.trim(); //2 执行查询 studentService.pageQuery(query); } 如果是服务内部调用,构造 StudentQuery 使用全参构造方法...三、启发 细节之处见真章,代码功底并不都体现在大地方,日常开发自己觉得“别扭”地方,都可以停下来斟酌优化一番。...大家在思考代码优化方案,主要遵循软件设计常见原则,如高内聚、弱耦合、降低复杂度原则。 重点参考设计模式几大原则。...四、总结 本文讲解内容虽然比较简答,但是实际开发很多同学采用到处 trim 导致遗漏后者逻辑重复问题,本文给出推荐方案,希望对大家有帮助。

35310
领券