0
votes

ArrayListe générique Liste égale extension

J'essaie de réécrire ce code à partir d'un Répondre à l'extension de ArrayList générique à Kotlin.

fun ArrayList<T>.equalLists(one: ArrayList<T>?, two: ArrayList<T>?): Boolean {
    if (one == null && two == null) {
        return true
    }

    if (one == null && two != null || one != null && two == null || one?.size != two?.size) {
        return false
    }

    val oneCopy = ArrayList(one)
    val twoCopy = ArrayList(two)

    oneCopy.sort()
    twoCopy.sort()

    return one == two
}


1 commentaires

Vous devez définir le type dans la signature. Utilisez amusant dans le début.


3 Réponses :


0
votes

ci-dessous est l'exemple des génériques de Kotlin

première classe de pojo personnalisée créée comme produit: xxx

Ajoutez ci-dessous le code sur Oncreate () Méthode: xxx

puis créer une fonction générique nommée "Equallistes": xxx

puis crée une nouvelle fonction qui va lancer un type générique et puis triez-les: xxx

pour définir la fonction générique, nous pouvons choisir l'une des tâches suivantes utiles " <*> " ou peut utiliser " amusement "comme ci-dessous:

1) Fun public Fun Equallistes (un: ArrayList <*> ?, Deux: ArrayList <*>?): Boolean {

2) Fun Equallistes (un: ArrayList ?, Deux: ArrayList ?): Boolean {


0 commentaires

0
votes

a finalement proposé une extension générique ArrayList pour cela.

categories.equalLists(otherCategories)


0 commentaires

2
votes

Je vois que vous avez trouvé une solution réalisable, mais je crois qu'une solution plus kotlin-idiomatique serait de définir cela sur la liste code> interface code> elle-même, plutôt que arraylist code> spécifiquement et peut également être déclaré comme une extension sur les références NULLLABLE LIST CODE> Equivalent sur le code Java d'origine (qui a pris en charge deux listes NULL comme arguments):

fun <T : Comparable<T>> List<T>?.containsSameElementsAs(other: List<T>?) = when {
    (this == null) xor (other == null) -> false // if only one is null
    (this?.size != other?.size) -> false // if both null, or have different sizes
    (this?.size == 1) -> this == other // avoid allocations for single element
    else -> this?.sorted() == other?.sorted()
}


0 commentaires