Производительность при использовании 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
    Фрагмент: изменение видимости в функции Анимация не работает при сохранении в базе данных? Android: дублирование фрагментов в FragmentManager Не удалось создать нового пользователя почему назначения не являются заявлениями Что делает оверенность типа Котлина возможной, что невозможно в Java или Scala? Возможно ли изменить порядок кнопок навигационной панели в android? Расширения в Котлине Как читать JSON из Url с помощью kotlin Android? Почему Kotlin получает такое UndeclaredThrowableException, а не исключение ParseException? Почему я не получаю правильный результат, когда я использую оригинальную функцию parseList в Kotlin? Получение элементов из списка списков с помощью API Java Stream в Котлине Как я могу добавить данные к объекту Kotlin и получить его на странице Vuejs Kotlin After 60 Second останавливает запись голоса Плагин JaCoCo Gradle сообщает об уровне покрытия, равном 0,0, для каждой упаковки