कैसे एक java.util कन्वर्ट करने के लिए। एक सूची के लिए सूची


105

नीचे त्रुटि के साथ मेरे पास यह स्काला विधि है। स्कैला सूची में नहीं बदल सकते।

 def findAllQuestion():List[Question]={
   questionDao.getAllQuestions()
 } 

बेमेल टाइप; पाया: java.util.List[com.aitrich.learnware.model.domain.entity.Question]आवश्यक: scala.collection.immutable.List[com.aitrich.learnware.model.domain.entity.Question]


3
इस प्रश्न को देखने वाले लोगों को ब्याज के इस अन्य प्रश्न का पता लग सकता है: stackoverflow.com/questions/8301947/…
Amndeep7

जवाबों:


70
import scala.collection.JavaConversions._

आपके लिए निहित रूपांतरण करेगा; उदाहरण के लिए:

var list = new java.util.ArrayList[Int](1,2,3)
list.foreach{println}

10
scala.collection.JavaConversions._के पक्ष में पदावनत किया गया है scala.collection.JavaConverters._ताकि इस उत्तर के लिए बेहतर है
डेक्सटर लेगास्पि

JavaConverts को इसके पक्ष में हटा दिया गया है: scala.jdk.CollectionConverters._2.13 के रूप में। विवरण यहाँ पाया जा सकता है
स्टीवन लेविन

122

आप बस स्काला का उपयोग करके सूची को बदल सकते हैं JavaConverters:

import scala.collection.JavaConverters._

def findAllQuestion():List[Question] = {
  questionDao.getAllQuestions().asScala
}

2
यह काम कर रहा है .. def findAllStudentTest (): सूची [StudentTest] = {var सूची = studentTestDao.getAllStudentTests () var slist = list.asScala.toLudist slist}
boycod3

13
a java.util.List .asScala अजीब तरह से मेरे लिए एक बफर के रूप में वापस आती है।
फिल्रो

2
मुझे भी: `scala> import scala.collection.JavaConverters._` import scala.collection.JavaConverters._ scala> val l = new java.util.ArrayList (java.lang.String] l: java.util.ArrayList [String] ] = [] scala> l.add ("hi") res70: Boolean = true scala> l.add ("de") res71: Boolean = true scala> l.asScala res72: scala.collection.mutable.Buffer [स्ट्रिंग ] = बफ़र (हाय, डी) `
क्रिटियम

2
@ माउहिज़ यदि एक स्कैला Bufferजावा है List, तो कुछ भी ठीक नहीं है! ओपी जावा सूची से एक अपरिवर्तनीय स्काला सूची में रूपांतरण चाहता था। अभिव्यक्तियाँ, जो उम्मीद करती हैं कि Scala Listटाइपसेक नहीं होगा a Buffer
एंड्रेस एफ।

4
आप .toList कोड जोड़ना भूल गएquestionDao.getAllQuestions().asScala.toList
रेमंड चेनोन

30
def findAllStudentTest(): List[StudentTest] = { 
  studentTestDao.getAllStudentTests().asScala.toList
} 

3
क्यों varएस? इसके अलावा, ऐसा लगता है कि अंतिम दो पंक्तियों को एक पंक्ति में जोड़ा जा सकता हैlist.asScala.toList
redent84

पहली संस्करण सूची में जावा उपयोग सूची मिल जाएगी और दूसरा स्लेव जावा उपयोग सूची को स्काला सूची में बदल देगा।
बॉयकोड 3

4
मेरा मतलब है, अगर आप चर को संशोधित नहीं कर रहे हैं तो varइसके बजाय क्योंval
redent84

लेकिन उप-संचालन के मामले में, वी को वैल के बजाय var का उपयोग करने की आवश्यकता होती है।
बॉयकोड 3

दोनों var listऔर val slistअनावश्यक हैं। मुझे लगता है कि उन्होंने इस उत्तर को और अधिक जटिल बना दिया, इसलिए मैंने उन्हें समेकित किया और उत्तर को और अधिक सरल बना दिया। @ jijeshvu07 यदि आप असहमत हैं, तो मुझे इसका पूर्ववत् संपादन करने के बजाय इसके परिवर्तन को पूर्ववत करने में खुशी होगी।
कोरी क्लेन

9

शुरू करना Scala 2.13, पैकेज के scala.collection.JavaConvertersपक्ष में पदावनत के रूप में चिह्नित किया गया हैscala.jdk.CollectionConverters :

import scala.jdk.CollectionConverters._

// val javaList: java.util.List[Int] = java.util.Arrays.asList(1, 2, 3)
javaList.asScala.toList
// List[Int] = List(1, 2, 3)

6

आयात JavaConverters, @fynn की प्रतिक्रिया गायब थीtoList

import scala.collection.JavaConverters._

def findAllQuestion():List[Question] = {
  //           java.util.List -> Buffer -> List
  questionDao.getAllQuestions().asScala.toList
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.