List 和MAP的区别

Posted 黄毛火烧雪下

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了List 和MAP的区别相关的知识,希望对你有一定的参考价值。

List 和MAP的区别

需求:返回的List卡片,某些卡片需要显示倒计时,解决方法:需要显示显示倒计时,则创建相对于的倒计时,当继续执行响应倒计时则不需要重新创建,更具list的标识即可判断

备注:HashMap key和value一一对应倒,key对应的value为null,则创建

    /** 倒计时集合. */
    private var timerList: MutableList<FixCountDownTimer?> = mutableListOf()
    //标记哪些卡片带有倒计时功能
    private var timerPositionList = arrayListOf<Int>()
  	private fun initTime(
        start: Boolean = false,
        tvCountTime: TextView,
        timeInter: Long,
        cardPosition: Int
    ) 
        //未标记有倒计时功能的时候执行
        if (!timerPositionList.contain(cardPosition) ) 
            tvCountTime?.text = spannableStringBuilder(getGlobalContext()) 
                append(getString(R.string.string_count_time))
                append((timeInter).formatToDDHHString())
            
            //添加指定卡片到标记集合
            timerPositionList.add(cardPosition)
            //添加指定卡片的倒计时到倒计时集合
            timerList.add(object : FixCountDownTimer(timeInter, 1000L) 
                override fun onFinish() 
                    //请求接口,重新小助手
                    viewModel.refresh()
                    cancel()
                

                override fun onTiack(millisUntilFinished: Long) 
                    tvCountTime?.text = spannableStringBuilder(getGlobalContext()) 
                        append(getString(R.string.string_count_time))
                        append((millisUntilFinished).formatToDDHHString())
                    
                
            )
            if (start) 
                //开启指定倒计时
                timerList[timerPositionList.indexOf(cardPosition)]?.setCurrentTime(timeInter)
                timerList[timerPositionList.indexOf(cardPosition)]?.start()
            
        

    
 private var timerMap: HashMap<Int, FixCountDownTimer>? = hashMapOf()
 private fun initTime(
        start: Boolean = false,
        tvCountTime: TextView,
        timeInter: Long,
        cardPosition: Int
    ) 
        //未标记有倒计时功能的时候执行
        if (timerMap?.get(cardPosition) == null) 
            tvCountTime?.text = spannableStringBuilder(getGlobalContext()) 
                append(getString(R.string.string_count_time))
                append((timeInter).formatToDDHHString())
            
            var fixCountDownTimer = object : FixCountDownTimer(timeInter, 1000L) 
                override fun onFinish() 
                    //请求接口,重新小助手
                    viewModel.refresh()
                    cancel()
                

                override fun onTick(millisUntilFinished: Long) 
                    tvCountTime?.text = spannableStringBuilder(getGlobalContext()) 
                        append(getString(R.string.string_count_time))
                        append((millisUntilFinished).formatToDDHHString())
                    
                
            
            timerMap?.set(cardPosition, fixCountDownTimer)
            if (start) 
                //开启指定倒计时
                timerMap?.get(cardPosition)?.setCurrentTime(timeInter)
                timerMap?.get(cardPosition)?.start()
            
        
    

以上是关于List 和MAP的区别的主要内容,如果未能解决你的问题,请参考以下文章

list,set,map有啥区别

Java集合中List和 Map区别?

List 和MAP的区别

List和ArrayList,Map和HashMap的区别

Java集合中List和 Map区别?

Java中List、Set、Map接口之间的区别和联系