Tất cả những gì tôi mong muốn là sử dụng một số Set đồng thời (dường như không tồn tại chút nào). Java sử dụng java.util.concurrent.ConcurrentHashMap<K, Void>
để đạt được hành vi đó. Tôi muốn làm sth tương tự tại Scala vì vậy tôi tạo ra thể hiện của Scala HashMap (hoặc Java ConcurrentHashMap) và cố gắng thêm một số các bộ:làm thế nào để nhanh chóng Đơn vị trong Scala?
val myMap = new HashMap[String, Unit]()
myMap + (("myStringKey", Unit))
Điều này tất nhiên bị rơi quá trình biên soạn như Unit là trừu tượng và cuối cùng .
Cách thực hiện công việc này? Tôi có nên sử dụng Any
/AnyRef
thay thế không? Tôi phải đảm bảo không ai chèn bất kỳ giá trị nào.
Nhờ sự giúp đỡ
Lưu ý, 'java.util.concurrent.ConcurrentHashMap' là sai. Loại 'Void' (vốn thông báo' V') chỉ có thể chấp nhận giá trị 'null', nhưng [tài liệu cho' ConcurrentHashMap'] (http://docs.oracle.com/javase/7/docs/api/java /util/concurrent/ConcurrentHashMap.html) đặc biệt không cho phép các khóa/giá trị 'null' trong bản đồ. Cách thực hiện điều này thường được thực hiện là 'ConcurrentHashMap ', sử dụng hằng số' Boolean.TRUE' cho các giá trị. (Sử dụng hằng số 'Boolean.TRUE' đảm bảo rằng bạn không tạo một cá thể' Boolean' mới cho mỗi mục nhập trong bản đồ.) –
DaoWen
hiệu chỉnh (void -> Void) được tiến hành, sử dụng 'Boolean.TRUE' là một mẹo rất hay, cảm ơn – petrbel
bạn có chắc là bạn nên sử dụng 'Đơn vị' ở đó không? làm thế nào về 'Tùy chọn' hoặc một ADT tùy chỉnh (gia đình lớp vỏ kín)? –