используйте a для l oop, чтобы добавить элемент в java .util.ArrayList, но адрес списка ссылки всегда меняется - PullRequest
0 голосов
/ 27 мая 2020

У меня возникает странная проблема, когда я использую for l oop для добавления элемента в java .util.ArrayList, но адрес списка ссылки всегда меняется Вот код:

var curntRow: Row = null
var startTime: lang.Long = null
//this is the list
var standTime: util.ArrayList[Row] = new util.ArrayList[Row]()

for (row <- usersCoorOrderByTime) {
  if (curntRow == null) {
    startTime = row.getAs[lang.Long](2)
  } else if (!row.getAs[String](1).equals(curntRow.getAs[String](1))) {
    //And I use the method list.add() right here
    standTime.add(Row(row.getAs[String](0), row.getAs[String](1), row.getAs[DoubleType](4), row.getAs[DoubleType](5), curntRow.getAs[lang.Long](2) - startTime))
    startTime = row.getAs[lang.Long](2)
  }
  curntRow = row
}

И пожалуйста, посмотрите pi c, который я отлаживаю ниже: addr is "7703"

Прежде чем попасть в l oop Адрес списка - "7703" Когда попадает в l oop, адрес меняется меняется на «11268»

меняется на «11287»

Самые странные вещи это когда он заканчивается l oop, адрес изменился обратно на то место, где он был первоначально объявлен

изменился обратно на «7703»

, наконец, я получил пустой ArrayList

Ответы [ 2 ]

0 голосов
/ 27 мая 2020

Я обнаружил ошибку, параметр для l oop - Dataframe, я должен перейти к Array или List, а затем сделать для l oop

0 голосов
/ 27 мая 2020

Попробуйте использовать Mutable ArrayBuffer. Ниже приведен простой пример. Надеюсь, это поможет.

val x = scala.collection.mutable.ArrayBuffer[String]()
x += "2"
x += "4"
println(x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...