在Kotlin for Android中使用Pair时的性能
我一直在使用ViewPager
的以下适配器类。 它从Java转换为Kotlin。
class ViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager) { private val mFragmentList = ArrayList() private val mFragmentTitleList = ArrayList() override fun getItem(position: Int): Fragment { return mFragmentList[position] } override fun getCount(): Int { return mFragmentList.size } fun addFragment(fragment: Fragment, title: String) { mFragmentList.add(fragment) mFragmentTitleList.add(title) } override fun getPageTitle(position: Int): CharSequence? { return mFragmentTitleList[position] } }
为了尽量减少我尝试使用Kotlin Pair
线的数量。 并将上面的实现转换为以下内容。 现在我很好奇这个实现使用Pair
的性能。 我可以得到一个合乎逻辑的解释吗?
class ViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager) { private val pairs = ArrayList<Pair>() fun addFragment(fragment: Fragment, title: String) = pairs.add(Pair(fragment, title)) override fun getItem(position: Int): Fragment = pairs[position].first override fun getCount(): Int = pairs.size override fun getPageTitle(position: Int): CharSequence? = pairs[position].second }
使用一个Pair
明显提高了可读性和可维护性,所以去那。
但是,如果没有约束条件,你需要通过索引访问元素( getItem(position: Int)
),我甚至会进一步使用Map
来代替。
private val fragmentToTitleMap = HashMap()
添加到:
fragmentToTitleMap[someFragment] = "someTitle"
不要过多地考虑微观优化。 在这种情况下不应该有明显的区别,因为你不会有+100片段。
- 使用AnkoLogger级别以外的“信息”
- 使用运行在节点服务器上的Kotlin代码的Websockets
- Android Kotlin .visibility
- Dagger2 – FragmentSubcomponentBuilder没有实现AndroidInjector.Factory
- Android体系结构组件:ViewModel在配置更改时返回null
- 一个简单的kotlin类与mockito测试引起MissingMethodInvocationException
- Spring 5和Kotlin 1.1协程:类型rx.Scheduler不存在
- 在Kotlin for Android中编写库是否有开销?
- Kotlin和DynamoDBMapper SaveBehavior