a******3 发帖数: 113 | 1 定义了一个
val map = new ConcurrentSkipListMap[Key, Value]()
因为要实现多线程,需要重写他的iterator
我的代码如下
def keyIterator: Iterator[Key] = new Iterator[Key] {
val newMap=getMapClone
var set=newMap.keySet()
var pos = 0
def hasNext = pos < newMap.size()
def next: Key = { val z = array(pos) ; pos += 1 ; z }
}
[error] found : Int
[error] required: Key
array(pos)这方法貌似是通过key去访问,但是我想通过index去访问这个set,该怎么
写呢?或者有什么办法可以iterate这个map的key集合吗
本人新手,无奈网上找不到,求各位不吝赐教 |
p*****2 发帖数: 21240 | |
a******3 发帖数: 113 | 3
def keyIterator: Iterator[Key] = new Iterator[Key] {
val newMap=getMapClone
var array=newMap.keySet().toArray
var pos = 0
def hasNext = pos < newMap.size()
def next: Key = { val z = array(pos) ; pos += 1 ; z }
}
[error] found : z.type (with underlying type Object)
[error] required: Key
[error] def next: Key = { val z = array(pos) ; pos += 1 ; z }
[error] one error found
然后变成获取的内容有问题了。。
【在 p*****2 的大作中提到】 : 转成Array试试
|
h***i 发帖数: 1970 | 4 最后那个z换成z.asInstanceOf[Key]
【在 a******3 的大作中提到】 : : def keyIterator: Iterator[Key] = new Iterator[Key] { : val newMap=getMapClone : var array=newMap.keySet().toArray : var pos = 0 : def hasNext = pos < newMap.size() : def next: Key = { val z = array(pos) ; pos += 1 ; z } : } : [error] found : z.type (with underlying type Object) : [error] required: Key
|