คำถามติดแท็ก scala-collections

ไลบรารีคอลเล็กชันสำหรับ Scala Programming Language

18
ห้องสมุดคอลเลกชัน Scala 2.8 เป็นกรณีของ "บันทึกการฆ่าตัวตายที่ยาวที่สุดในประวัติศาสตร์" หรือไม่? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันเพิ่งเริ่มดูที่การนำคอลเลคชั่นห้องสมุดสกาล่ากลับมาใช้ใหม่ซึ่งกำลังจะวางตลาดในรุ่น2.8 ที่ใกล้เข้ามา ผู้ที่คุ้นเคยกับห้องสมุดจาก 2.7 จะสังเกตเห็นว่าห้องสมุดจากมุมมองการใช้งานมีการเปลี่ยนแปลงเล็กน้อย ตัวอย่างเช่น... > List("Paris", "London").map(_.length) res0: List[Int] List(5, 6) ... สามารถใช้งานได้ทั้งสองรุ่น ห้องสมุดใช้ประโยชน์ได้อย่างเด่นชัดจริงๆแล้วมันยอดเยี่ยมมาก อย่างไรก็ตามผู้ที่ไม่คุ้นเคยกับ Scala ก่อนหน้านี้และได้พูดคุยกับคนอื่นเพื่อทำความเข้าใจกับภาษาในขณะนี้ต้องทำให้ความรู้สึกของลายเซ็นวิธีการเช่น: def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That สำหรับฟังก์ชั่นการใช้งานที่เรียบง่ายนี่เป็นลายเซ็นที่น่ากลัวและเป็นสิ่งที่ฉันคิดว่าตัวเองต้องดิ้นรนที่จะเข้าใจ ไม่ใช่ว่าฉันคิดว่า Scala น่าจะเป็น Java คนต่อไป (หรือ / C / C ++ …

4
สกาล่า 2.8 breakOut
ใน Scala 2.8มีวัตถุอยู่ในscala.collection.package.scala: def breakOut[From, T, To](implicit b : CanBuildFrom[Nothing, T, To]) = new CanBuildFrom[From, T, To] { def apply(from: From) = b.apply() ; def apply() = b.apply() } ฉันได้รับแจ้งว่าผลลัพธ์นี้ใน: > import scala.collection.breakOut > val map : Map[Int,String] = List("London", "Paris").map(x => (x.length, x))(breakOut) map: Map[Int,String] = Map(6 -> London, …

6
เมื่อใดที่ฉันควรเลือก Vector ใน Scala
ดูเหมือนว่าVectorจะมาช้าไปงานปาร์ตี้คอลเล็กชั่น Scala และโพสต์บล็อกที่มีอิทธิพลทั้งหมดได้ออกไปแล้ว ใน Java ArrayListเป็นคอลเลกชันเริ่มต้น - ฉันอาจใช้LinkedListแต่เมื่อฉันคิดว่าผ่านอัลกอริทึมและดูแลเพียงพอที่จะปรับให้เหมาะสม ใน Scala ฉันควรจะใช้Vectorเป็นค่าเริ่มต้นของฉันSeqหรือพยายามหาเวลาListที่เหมาะสมกว่าจริงหรือไม่

4
JavaConverters และ JavaConversions ใน Scala แตกต่างกันอย่างไร
ในscala.collectionมีสองวัตถุที่คล้ายกันมากและJavaConversionsJavaConverters ความแตกต่างระหว่างวัตถุทั้งสองนี้คืออะไร? ทำไมพวกเขาทั้งสองอยู่? เมื่อใดที่ฉันต้องการใช้หนึ่งกับอื่น ๆ


13
วิธีที่ดีที่สุดในการเปลี่ยนคอลเล็กชันให้เป็นแบบแผนที่โดยคีย์
หากฉันมีคอลเลกชันcประเภทTและมีสถานที่ให้บริการpบนT(จากประเภทPพูด) เป็นวิธีที่ดีที่สุดในการทำแผนที่โดยแยกแตกคีย์คืออะไร? val c: Collection[T] val m: Map[P, T] วิธีหนึ่งคือสิ่งต่อไปนี้: m = new HashMap[P, T] c foreach { t => m add (t.getP, t) } แต่ตอนนี้ฉันต้องการแผนที่ที่ไม่แน่นอน มีวิธีที่ดีกว่าในการทำเช่นนี้เพื่อให้เป็นหนึ่งในสายและฉันจบลงด้วยแผนที่ที่ไม่เปลี่ยนรูป ? (เห็นได้ชัดว่าฉันสามารถเปลี่ยนสิ่งต่าง ๆ ข้างต้นให้กลายเป็นยูทิลิตี้ห้องสมุดอย่างที่ฉันต้องการใน Java แต่ฉันสงสัยว่าใน Scala ไม่มีความจำเป็น)

3
ความแตกต่างระหว่าง Array และ List ใน scala
ในกรณีใดฉันควรใช้ Array (Buffer) และ List (Buffer) ความแตกต่างเพียงอย่างเดียวที่ฉันรู้คืออาร์เรย์นั้นไม่แปรปรวนและรายการต่าง ๆ แปรปรวน แต่สิ่งที่เกี่ยวกับประสิทธิภาพและลักษณะอื่น ๆ ?

1
สตรีมกับ Views vs Iterators
อะไรคือความแตกต่างระหว่าง Streams, Views (SeqView) และ Iterators in scala นี่คือความเข้าใจของฉัน: พวกเขาทั้งหมดเป็นรายการที่ขี้เกียจ สตรีมแคชค่า Iterators สามารถใช้ได้ครั้งเดียวเท่านั้น? คุณไม่สามารถย้อนกลับไปที่จุดเริ่มต้นและประเมินค่าอีกครั้งได้หรือไม่ ค่าของมุมมองจะไม่ถูกแคช แต่คุณสามารถประเมินค่าเหล่านั้นซ้ำแล้วซ้ำอีก? ดังนั้นถ้าฉันต้องการประหยัดพื้นที่ของฮีปฉันควรใช้ตัววนซ้ำ (ถ้าฉันไม่ข้ามรายการอีกครั้ง) หรือมุมมอง? ขอบคุณ

6
จะอ่านไฟล์จากโฟลเดอร์ทรัพยากรใน Scala ได้อย่างไร
ฉันมีโครงสร้างโฟลเดอร์ดังนี้: - main -- java -- resources -- scalaresources --- commandFiles และในโฟลเดอร์นั้นฉันมีไฟล์ที่ต้องอ่าน นี่คือรหัส: def readData(runtype: String, snmphost: String, comstring: String, specificType: String): Unit = { val realOrInvFile = "/commandFiles/snmpcmds." +runtype.trim // these files are under commandFiles folder, which I have to read. try { if (specificType.equalsIgnoreCase("Cisco")) { val specificDeviceFile: String …

4
Scala: อะไรคือความแตกต่างระหว่างลักษณะ Traversable และ Iterable ในคอลเล็กชัน Scala
ฉันได้ดูคำถามนี้แล้วแต่ยังไม่เข้าใจความแตกต่างระหว่างลักษณะที่สามารถทำซ้ำได้และลักษณะที่ผ่านได้ ใครช่วยอธิบายหน่อย

10
วิธีที่หรูหราในการกลับแผนที่ใน Scala
การเรียนรู้ Scala ในปัจจุบันและจำเป็นในการสลับแผนที่เพื่อทำการค้นหาคีย์กลับค่า ฉันกำลังมองหาวิธีง่ายๆในการทำสิ่งนี้ แต่มีเพียง: (Map() ++ origMap.map(kvp=>(kvp._2->kvp._1))) ใครมีแนวทางที่สง่างามกว่านี้?

3
วิธีที่ถูกต้องในการรับ subarray ใน Scala คืออะไร?
ฉันกำลังพยายามหา subarray ใน scala และฉันสับสนเล็กน้อยว่าวิธีที่เหมาะสมในการทำคืออะไร สิ่งที่ฉันต้องการมากที่สุดคือสิ่งที่คุณสามารถทำได้ใน python: x = [3, 2, 1] x[0:2] แต่ฉันค่อนข้างมั่นใจว่าคุณไม่สามารถทำได้ วิธีที่ชัดเจนที่สุดคือการใช้ไลบรารียูทิลิตี้ Java Arrays import java.util.Arrays val start = Array(1, 2, 3) Arrays.copyOfRange(start, 0, 2) แต่มันทำให้ฉันรู้สึกสกปรกเล็กน้อยที่ใช้ไลบรารี Java ใน Scala วิธีที่ "scalaic" มากที่สุดที่ฉันพบจะเป็น def main(args: List[String]) { val start = Array(1, 2, 3) arrayCopy(start, 0, 2) } def …

3
เหตุใดชุดที่ไม่เปลี่ยนรูปของ Scala จึงไม่เหมือนกันในประเภทของมัน?
แก้ไข : เขียนคำถามนี้ใหม่ตามคำตอบเดิม scala.collection.immutable.Setชั้นไม่ได้ covariant ในพารามิเตอร์ชนิดของมัน ทำไมถึงเป็นแบบนี้? import scala.collection.immutable._ def foo(s: Set[CharSequence]): Unit = { println(s) } def bar(): Unit = { val s: Set[String] = Set("Hello", "World"); foo(s); //DOES NOT COMPILE, regardless of whether type is declared //explicitly in the val s declaration }

10
การแปลงคอลเลกชัน Java เป็นคอลเลกชัน Scala
ที่เกี่ยวข้องกับคำถาม Stack Overflow Scala เทียบเท่ากับ HashSet (Collection)ใหม่ฉันจะแปลงคอลเลกชัน Java ( java.util.Listพูด) เป็นคอลเล็กชัน Scala ได้Listอย่างไร ฉันกำลังจริงพยายามที่จะแปลงเรียก API Java เพื่อฤดูใบไม้ผลิ SimpleJdbcTemplateซึ่งส่งกลับลงไปในไม่เปลี่ยนรูปสกาล่าjava.util.List<T> HashSetตัวอย่างเช่น: val l: java.util.List[String] = javaApi.query( ... ) val s: HashSet[String] = //make a set from l ดูเหมือนว่าจะได้ผล ยินดีรับคำติชม! import scala.collection.immutable.Set import scala.collection.jcl.Buffer val s: scala.collection.Set[String] = Set(Buffer(javaApi.query( ... ) ) : …

3
param: _ * หมายความว่าอย่างไรใน Scala
ยังใหม่สำหรับ Scala (2.9.1) ฉันมีList[Event]และต้องการคัดลอกลงใน a Queue[Event]แต่ไวยากรณ์ต่อไปนี้ให้ผลQueue[List[Event]]แทน: val eventQueue = Queue(events) ด้วยเหตุผลบางประการการทำงานต่อไปนี้: val eventQueue = Queue(events : _*) แต่ฉันอยากจะเข้าใจว่ามันทำอะไรและทำไมมันถึงได้ผล? ฉันดูลายเซ็นของQueue.applyฟังก์ชันแล้ว: def apply[A](elems: A*) และฉันเข้าใจว่าทำไมความพยายามครั้งแรกไม่ได้ผล แต่ความหมายของครั้งที่สองคืออะไร? คืออะไร:และ_*ในกรณีนี้และทำไมapplyฟังก์ชั่นไม่ใช้เพียงแค่Iterable[A]?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.