• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

323
Views
Rellene una lista en Kotlin con un bucle for

Ha pasado un tiempo desde que comencé a aprender a desarrollar en Kotlin. Hay algo en lo que estoy trabajando, estoy tratando de analizar una lista en otro tipo de lista. Básicamente son lo mismo pero con diferentes nombres. Pero cuando trato de completar la nueva lista con los datos que obtengo de la lista dada como parámetro en la función, la lista solo se completa con el primer objeto.

Aquí está mi función:

 fun convertRoomClass(course: List<Course>) : List<Courses> { lateinit var list : List<Courses> course.forEach { val id = it.pathID val name = it.pathName val desc = it.pathDescription val crs : Courses = Courses(id, name!!, desc!!) list = listOf(crs) } return list }
about 3 years ago · Santiago Trujillo
3 answers
Answer question

0

El error en su código es que está haciendo una lista en cada iteración del ciclo. ¡Primero debe hacer la lista y luego agregarle todos los elementos del ciclo!

 fun convertRoomClass(courses: List<Course>) : List<AnotherCourseClass> { val newList = mutableListOf<AnotherCourseClass>() courses.forEach { newList += AnotherCourseClass(it.pathID, it.pathName, it.pathDescription) } return newList }

Una mejor solución es usar la función de mapa

 fun convertRoomClass(courses: List<Course>) = courses.map { AnotherCourseClass(it.pathID, it. pathName, it.pathDescription) }
about 3 years ago · Santiago Trujillo Report

0

Quizá estés buscandoMapa de Kotlin

Ejemplo:

 course.map { Courses(it.pathID, it.pathName,it.pathDescription) }
about 3 years ago · Santiago Trujillo Report

0

Está obteniendo la lista solo con un objeto, porque la función listOf(crs) devuelve una lista de todos los objetos que se pasan como parámetros. Al decir lo mismo en Java , estás haciendo algo como esto:

 for (course: Courses) { Course course = new Course(...); List<Course> list = new ArrayList<>(); list.add(course); return list; }

Como puede ver, creó una nueva lista con un solo objeto por iteración. Lo que está tratando de lograr, se puede hacer con el map{...} que simplemente transforma cada objeto en la lista inicial usando el código pasado dentro del map y devuelve la lista de objetos transformados

 course.map{ Courses(...) }

Además, he notado que estás usando el !! operador al crear un objeto Courses . Probablemente porque el Course puede tener un nombre nullable , mientras que los Courses no. Estoy considerando esto como una mala práctica, porque en este caso estás diciendo

Lance una Exception si el nombre es null .

Creo que un enfoque mucho mejor es proporcionar una alternativa, como:

val name = course.name ?: "default" , diciendo

Utilice el name o "default" si el name es null .

u omitir objetos sin nombre, o cualquier otro enfoque que se adapte a su situación.

about 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error