代码之家  ›  专栏  ›  技术社区  ›  Alexa289

如何根据自定义对象在Kotlin中的特定属性在Arraylist中查找索引?

  •  0
  • Alexa289  · 技术社区  · 6 年前

    我有一个事件列表

    var approvedEvents = ArrayList<Event>()
    

    事件的类别是这样的

    class Event() {
    
        var eventID : String = ""
        var createdBy: String = "" // uid of user creator
        var creatorFullName: String = ""
        var creatorIsVerified : Boolean = false
        var creatorProfilePictureImagePath = ""
        var createdAt : Date = Calendar.getInstance().time
        var hasBeenApproved : Boolean = false
        var title : String = ""
        var speaker : String? = null
        var coordinate : GeoPoint = City.defaultCityCoordinate
        var address : String = ""
        var city : String = ""
        var venue : String = ""
    
    }
    

    所以我想在 approvedEvents arraylist的eventID匹配 selectedEvent.eventID 在科特林怎么做?有没有具体的方法可以使用?

    0 回复  |  直到 6 年前
        1
  •  14
  •   Networks    6 年前

    使用 indexOfFirst indexOfLast 在列表中查找项的索引 ArrayList 根据您自己的标准,如下所示:

    val index = approvedEvents.indexOfFirst{
            it.eventID == selectedEvent.eventID
        }
    
        2
  •  -1
  •   Ankit Dubey    6 年前

    首先,必须重写事件类中的equals函数,如

    ------
    ------
    var city : String = ""
    var venue : String = ""
    
    override fun equals(other: Any?): Boolean{
      if(other is Event){
        return eventID.equals(other.eventID)
      }
      return false;
     }
    }
    

    现在,当您想要在列表中搜索带有eventId的事件对象时,首先创建一个带有您想要搜索的eventId的临时事件对象

    val temp=Event()
    temp.eventID="102"
    

    然后简单地获取索引

    print(events.indexOf(temp))