Производительность при использовании Pair в Kotlin для Android

Я использую следующий класс адаптера для ViewPager . Он был преобразован в Котлин из java.

 class ViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager) { private val mFragmentList = ArrayList<Fragment>() private val mFragmentTitleList = ArrayList<String>() 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] } } 

Чтобы свести к минимуму количество строк, я попытался использовать Pair Kotlin. И преобразуйте приведенную выше реализацию в следующую. Теперь мне интересно узнать о производительности этой реализации, используя Pair . Могу ли я получить логическое объяснение по этому поводу?

 class ViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager) { private val pairs = ArrayList<Pair<Fragment, String>>() 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 явно улучшает читаемость и ремонтопригодность, поэтому идите с этим.

    Но я бы даже пошел дальше использовать Map вместо этого, если бы не было ограничения, что вам нужно получить доступ к элементам через индекс ( getItem(position: Int) ).

     private val fragmentToTitleMap = HashMap<Fragment, String>() 

    Добавьте к этому:

     fragmentToTitleMap[someFragment] = "someTitle" 

    Не думайте слишком много о микро-оптимизации. В этом случае не должно быть заметной разницы, так как у вас не будет +100 фрагментов.

    Intereting Posts
    Как объявить параметр функции для приема функций, которые вы выбрали? Внутренние записи (столбцы) в объекте помещения Могу ли я использовать два xml-макета для использования одного и того же зрителя с использованием синтетических расширений Kotlin? Странная ошибка «Val не может быть переназначена» при установке свойства в Kotlin объекта Java не удалось построить проект kotlin с градиентом Комната Kotlin: У сущностей и Pojos должен быть полезный публичный конструктор Создайте общий наблюдаемый, который избегает множественного вызова AsyncTask в Android с Kotlin Эквивалент текста для ImageView Не удалось «findViewById» в Котлине. Получение ошибки «Ошибка ввода типа» Android – объявлять и использовать представления в Котлине Доступ к информации из группы BroadcastReceiver в Android с использованием kotlin Kotlin Родной эквивалент System.exit (-1) Android Socket.IO Получение Socket.ID java.lang.AbstractMethodError: абстрактный метод при запуске espresso на Kotlin с Mockito