将类对象存储在ArrayList中

时间:2018-03-31 13:10:45

标签: java arraylist kotlin

我正在开发一个简单的应用程序(待办事项列表应用程序)。我创建了一个名为tasks的类:

class tasks(var title:String, var time:String)

并将一些tasks存储在ArrayList

fun main(args: Array<String>){
    var tasks_list = ArrayList<tasks>(tasks("hello","3am"),tasks("meet amy","5pm"))
}

但它仍然给我一个错误: the error

你能解释一下为什么它不起作用吗?以及如何打印task。感谢。

1 个答案:

答案 0 :(得分:1)

您似乎没有正确初始化ArrayList

您可以执行以下操作:

fun main(args: Array<String>) {
    var tasks_list = arrayListOf<tasks>(tasks("hello","3am"), tasks("meet amy","5pm"))
    println(tasks_list)
}

相反。或者,这也可以:

var tasks_list = arrayListOf<tasks>()
tasks_list.add(tasks("hello","3am"))
tasks_list.add(tasks("meet amy","5pm"))
println("Tasks list:")
println(tasks_list)

但是,如果不覆盖toString(),则只会打印某种类似于以下内容的对象引用:

Tasks list:
[tasks@28a418fc, tasks@5305068a]

tasks课程中,您应该覆盖toString(),以便打印出有用的内容,如下所示:

class tasks(var title:String, var time:String) {

    override fun toString() : String = "{Title: $title. Time: $time}"

}

现在您的输出将如下所示:

Tasks list:
[{Title: hello. Time: 3am}, {Title: meet amy. Time: 5pm}]

编辑:

关于您的评论,如果您希望单独打印该类的属性,您可以简单地使用此类的getter。这些是自动生成的,在这种情况下具有public访问权限。

因此,您可以按如下方式迭代列表中的所有tasks

    for(task in tasks_list) {
        println(task.title)
        println(task.time)
    }

哪个会打印出来:

hello
3am
meet amy
5pm

或者:

    for(i in 0..tasks_list.size-1) {
        println("Task #: $i")
        println(tasks_list.get(i).title)
        println(tasks_list.get(i).time)
    }

(注意-1,因为范围运算符包含)会打印出来:

Task #: 0
hello
3am
Task #: 1
meet amy
5pm

我强烈建议您在继续之前阅读一些基本文档(例如this),因为这些是您在尝试做其他事情之前应该学习的非常基本的事情。