কিভাবে একটি java.util.List কে স্কালার তালিকায় রূপান্তর করবেন


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._তাই এই উত্তর উত্তম
Dexter আমরা লেগস্পি

জাভা কনভার্টসকে scala.jdk.CollectionConverters._2.13 হিসাবে অনুকৃত করা হয়েছে । বিশদ এখানে পাওয়া যাবে
স্টিভেন লেভাইন

122

আপনি কেবল স্কালার ব্যবহার করে তালিকাটি রূপান্তর করতে পারেন JavaConverters:

import scala.collection.JavaConverters._

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

2
এটি কাজ করছে বলে মনে হচ্ছে .. Def findAllStudentTest (): তালিকা [স্টুডেন্ট টেস্ট] = list var তালিকা = ছাত্রস্টেস্টডাও.জেটআল স্টুডেন্ট টেস্টস () var স্লিট = list.asScala.to তালিকার স্লিট}
বয়কড 3

13
একটি java.util.List .ascla অদ্ভুতভাবে আমার জন্য বাফার হিসাবে ফিরে আসে।
ফিলরো

2
আমিও: `স্কেল> আমদানি করুন স্কালা.কলেশন.জভা কনভার্টার্স _ ] = [] স্কেলা> l.add ("হাই") রেজ 70: বুলিয়ান = সত্য স্কেল> l.add ("দে") রেজোলিউশন: বুলিয়ান = সত্য স্কেল> l.asScala res72: scala.collection.mutable.Buffer [স্ট্রিং ] = বাফার (হাই, ডি) `
সমালোচনা 16

2
@ মমহিজ যদি স্কাল Bufferজাভা হয় Listতবে কিছুই ঠিক নেই! ওপি জাভা তালিকা থেকে একটি অপরিবর্তনীয় স্কালাল তালিকায় রূপান্তর চেয়েছিল। যে স্কেল আশা করে এমন এক্সপ্রেশনগুলি Listকোনও দিয়ে টাইপচেক করবে না Buffer
আন্দ্রেস এফ।

4
আপনি .toList কোডটি যুক্ত করতে ভুলে গেছেনquestionDao.getAllQuestions().asScala.toList
রেমন্ড চ্যানন

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

3
এস কেন var? এছাড়াও, মনে হচ্ছে শেষ দুটি লাইন একক লাইনে একত্রিত হতে পারেlist.asScala.toList
redent84

প্রথম ভেরি তালিকাটি জাভা ব্যবহারের তালিকা এবং দ্বিতীয় স্লিস্টটি জাভা ব্যবহারের তালিকাটিকে স্কালা তালিকায় রূপান্তর করবে।
বয়কড করুন

4
আমি বলতে চাইছি কেন varপরিবর্তে valআপনি যদি ভেরিয়েবলটি পরিবর্তন করছেন না
redent84

তবে সাব সাব অপারেশনগুলিতে ভেলের পরিবর্তে ভের ব্যবহার করতে হবে।
বর্জন করুন

উভয় var listএবং val slistঅপ্রয়োজনীয় ছিল। আমি মনে করি তারা এই উত্তরটি আরও জটিল করেছে, তাই আমি তাদের একীভূত করেছি এবং উত্তরটি আরও সহজ করে তুলেছি। @ জিজেশভু07 আপনি যদি একমত না হন তবে আমি সম্পাদনাটি পূর্বাবস্থায় ফেরাতে এবং তার পরিবর্তে তার নিজের উত্তর হিসাবে জমা দেওয়ার জন্য খুশি হব।
Cory Klein

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, @ ফিনের প্রতিক্রিয়া অনুপস্থিত ছিলtoList

import scala.collection.JavaConverters._

def findAllQuestion():List[Question] = {
  //           java.util.List -> Buffer -> List
  questionDao.getAllQuestions().asScala.toList
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.