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

API การรวบรวมให้นักพัฒนามีชุดของคลาสและอินเทอร์เฟซที่ทำให้ง่ายต่อการจัดการคอลเลกชันของวัตถุ

5
val-mutable กับ var-immutable ใน Scala
มีแนวทางใดบ้างใน Scala เกี่ยวกับเวลาที่จะใช้ val กับคอลเลกชันที่เปลี่ยนแปลงได้กับการใช้ var กับคอลเล็กชันที่ไม่เปลี่ยนรูปหรือไม่ หรือคุณควรมุ่งเป้าไปที่ val ด้วยคอลเลกชันที่ไม่เปลี่ยนรูป? ความจริงที่ว่ามีคอลเลกชันทั้งสองประเภททำให้ฉันมีทางเลือกมากมายและบ่อยครั้งที่ฉันไม่รู้ว่าจะเลือกอย่างไร

6
Java: วิธีที่ดีที่สุดในการวนซ้ำผ่านคอลเล็กชัน (ที่นี่ ArrayList)
วันนี้ฉันมีความสุขในการเขียนโค้ดเมื่อฉันไปถึงโค้ดชิ้นหนึ่งที่ฉันใช้ไปแล้วหลายร้อยครั้ง: การทำซ้ำผ่านคอลเล็กชัน (ที่นี่ ArrayList) ด้วยเหตุผลบางอย่างฉันดูตัวเลือกการเติมข้อความอัตโนมัติของ Eclipse และทำให้ฉันสงสัยว่า: ลูปต่อไปนี้ใช้งานได้ดีกว่าลูปอื่น ๆ ในกรณีใดบ้าง ลูปดัชนีอาร์เรย์คลาสสิก: for (int i = 0; i < collection.length; i++) { type array_element = collection.get(index); } Iterator hasNext () / next (): for (Iterator iterator = collection.iterator(); iterator.hasNext();) { type type = (type) iterator.next(); } และสิ่งที่ฉันชอบเพราะมันเขียนง่ายมาก: for (iterable_type iterable_element : …

1
เหตุใดวิธีการ removeRange () ของ AbstractList ของ Java จึงได้รับการป้องกัน
ใครมีความคิดบ้างไหมทำไมวิธี removeRange ในAbstractList (และในArrayList ) จึงเป็นprotected ? ดูเหมือนว่าการดำเนินการที่กำหนดไว้ค่อนข้างดีและมีประโยชน์ แต่ถึงกระนั้นหากต้องการใช้เราจะบังคับให้ใช้คลาสย่อยของการใช้งานรายการ มีเหตุผลบางอย่างซ่อนอยู่หรือไม่? ดูเหมือนจะอธิบายไม่ได้สำหรับฉัน

7
พจนานุกรมแบบสองทิศทาง 1 ถึง 1 ใน C #
ฉันกำลังมองหาคลาส Dictionary 1 ถึง 1 แบบทั่วไปแบบสองทิศทางใน C # (2) เช่น BiDictionaryOneToOne<T, S>ซึ่งรับประกันได้ว่าจะมีเพียงหนึ่งในแต่ละค่าและสำคัญ (ถึง RefEquals อยู่แล้ว) และที่สามารถค้นหาได้โดยใช้ปุ่มหรือค่า มีใครรู้บ้างหรือฉันควรใช้มันเอง ไม่อยากจะเชื่อเลยว่าฉันเป็นคนแรกที่ต้องการสิ่งนี้ ... มี BiDictionary ในคำตอบสำหรับคำถามนี้แต่ไม่ใช่สำหรับองค์ประกอบที่ไม่ซ้ำใคร (และยังไม่ใช้ RemoveByFirst (T t) หรือ RemoveBySecond (S s)) ขอบคุณ!
98 c#  .net  collections 

5
เหตุใด Collections.sort จึงใช้ Mergesort แต่ Arrays.sort ใช้ไม่ได้
ฉันใช้ JDK-8 (x64) สำหรับArrays.sort(primitives) ฉันพบสิ่งต่อไปนี้ในเอกสาร Java: อัลกอริทึมการเรียงลำดับคือ Dual-Pivot Quicksortโดย Vladimir Yaroslavskiy, Jon Bentley และ Joshua Bloch สำหรับCollections.sort(วัตถุ) ฉันพบ "Timsort" นี้: การนำไปใช้งานนี้เป็นการผสานแบบวนซ้ำที่เสถียรและปรับเปลี่ยนได้... การนำไปใช้งานนี้จะทิ้งรายการที่ระบุลงในอาร์เรย์จัดเรียงอาร์เรย์และวนซ้ำในรายการที่รีเซ็ตแต่ละองค์ประกอบจากตำแหน่งที่สอดคล้องกันในอาร์เรย์ ถ้าCollections.sortใช้อาร์เรย์ทำไมไม่ได้เพียงโทรArrays.sortหรือใช้แบบ dual-เดือยQuickSort ? ทำไมต้องใช้Mergesort ?

16
C # Sortable collection ซึ่งอนุญาตให้มีคีย์ซ้ำกัน
ฉันกำลังเขียนโปรแกรมเพื่อกำหนดลำดับที่วัตถุต่างๆจะปรากฏในรายงาน ลำดับคือตำแหน่ง Y (เซลล์) บนสเปรดชีต Excel ส่วนสาธิตของโค้ดอยู่ด้านล่าง สิ่งที่ฉันต้องการทำให้สำเร็จคือการมีคอลเลกชันซึ่งจะทำให้ฉันสามารถเพิ่มวัตถุได้หลายชิ้นและฉันจะได้รับคอลเลกชันที่เรียงตามลำดับ SortedList list = new SortedList(); Header h = new Header(); h.XPos = 1; h.name = "Header_1"; list.Add(h.XPos, h); h = new Header(); h.XPos = 1; h.name = "Header_2"; list.Add(h.XPos, h); ฉันรู้ว่าสิ่งSortedListนี้จะไม่อนุญาตและฉันได้ค้นหาทางเลือกอื่น ฉันไม่ต้องการที่จะกำจัดList<KeyValuePair<int, object>>รายการที่ซ้ำกันและพยายามแล้ว ขอบคุณ.

10
สร้างรายการ int ดั้งเดิมหรือไม่
มีวิธีสร้างรายการ primitive int หรือ primitives ใน java ดังต่อไปนี้หรือไม่? List<int> myList = new ArrayList<int>(); ดูเหมือนว่าฉันสามารถทำได้ List myList = new ArrayList(); และเพิ่ม "int" ลงในรายการนี้ แต่นั่นหมายความว่าฉันสามารถเพิ่มอะไรก็ได้ในรายการนี้ เป็นทางเลือกเดียวของฉันคือสร้างอาร์เรย์ของ int และแปลงเป็นรายการหรือสร้างรายการวัตถุจำนวนเต็มหรือไม่

11
วิธีที่หรูหราในการรวมคอลเลกชันขององค์ประกอบต่างๆ
สมมติว่าฉันมีคอลเล็กชันตามจำนวนที่กำหนดแต่ละรายการมีวัตถุประเภทเดียวกัน (เช่นList<int> fooและList<int> bar) หากคอลเลกชันเหล่านี้อยู่ในคอลเลกชั่น (เช่นประเภทList<List<int>>ฉันสามารถใช้SelectManyเพื่อรวมทั้งหมดเป็นคอลเลกชั่นเดียว อย่างไรก็ตามหากคอลเลกชันเหล่านี้ไม่ได้อยู่ในคอลเลกชั่นเดียวกันฉันรู้สึกประทับใจที่ต้องเขียนวิธีการดังนี้: public static IEnumerable<T> Combine<T>(params ICollection<T>[] toCombine) { return toCombine.SelectMany(x => x); } ซึ่งฉันจะเรียกแบบนี้ว่า var combined = Combine(foo, bar); มีวิธีที่สะอาดและสวยงามในการรวมคอลเลกชัน (จำนวนเท่าใดก็ได้) โดยไม่ต้องเขียนวิธียูทิลิตี้เหมือนCombineข้างต้นหรือไม่? ดูเหมือนง่ายพอที่จะมีวิธีทำใน LINQ แต่อาจจะไม่ใช่

12
อะไรคือความแตกต่างระหว่าง List (of T) และ Collection (of T)?
ฉันเคยเห็นพวกเขาใช้ในรูปแบบเดียวกันมากมายและฉันกังวลว่าฉันกำลังจะไปตามเส้นทางในการออกแบบที่ไม่สามารถย้อนกลับได้หากฉันไม่เข้าใจสิ่งนี้ให้ดีขึ้น นอกจากนี้ฉันกำลังใช้. NET
96 .net  list  collections 

7
ฉันสามารถใช้ตัวเริ่มต้นการรวบรวมสำหรับรายการพจนานุกรม <TKey, TValue> ได้หรือไม่
ฉันต้องการใช้ตัวเริ่มต้นการรวบรวมสำหรับรหัสบิตถัดไป: public Dictionary&lt;int, string&gt; GetNames() { Dictionary&lt;int, string&gt; names = new Dictionary&lt;int, string&gt;(); names.Add(1, "Adam"); names.Add(2, "Bart"); names.Add(3, "Charlie"); return names; } โดยทั่วไปแล้วควรเป็นดังนี้: return new Dictionary&lt;int, string&gt; { 1, "Adam", 2, "Bart" ... แต่ไวยากรณ์ที่ถูกต้องสำหรับสิ่งนี้คืออะไร?

23
วิธีการแปลงวัตถุ Java (bean) เป็นคู่คีย์ - ค่า (และในทางกลับกัน)?
สมมติว่าฉันมีวัตถุ java ที่เรียบง่ายซึ่งมีคุณสมบัติ getXXX และ setXXX บางอย่างเท่านั้น อ็อบเจ็กต์นี้ใช้เพื่อจัดการกับค่าเท่านั้นโดยทั่วไปคือเรกคอร์ดหรือแผนที่ชนิดปลอดภัย (และตัวแสดง) ฉันมักจะต้องแอบแฝงวัตถุนี้เป็นคู่ค่าคีย์ (สตริงหรือประเภทปลอดภัย) หรือแปลงจากคู่ค่าคีย์เป็นวัตถุนี้ นอกเหนือจากการสะท้อนกลับหรือเขียนโค้ดด้วยตนเองเพื่อทำการแปลงนี้วิธีใดที่ดีที่สุดในการบรรลุเป้าหมายนี้ ตัวอย่างอาจส่งวัตถุนี้ผ่าน jms โดยไม่ใช้ประเภท ObjectMessage (หรือแปลงข้อความขาเข้าเป็นชนิดของวัตถุที่ถูกต้อง)


3
ฉันจะใช้รูปแบบการเพิ่มคุณค่า - ห้องสมุดของฉันกับคอลเลกชัน Scala ได้อย่างไร
หนึ่งในรูปแบบที่มีประสิทธิภาพมากที่สุดที่มีอยู่ในสกาลาเป็นประเทือง-ห้องสมุดของฉันรูปแบบ * ซึ่งใช้แปลงโดยปริยายที่จะปรากฏขึ้นเพื่อเพิ่มวิธีการเรียนที่มีอยู่โดยไม่ต้องมีความละเอียดวิธีการแบบไดนามิก ตัวอย่างเช่นหากเราต้องการให้สตริงทั้งหมดมีวิธีการspacesนับจำนวนอักขระที่มีช่องว่างเราสามารถ: class SpaceCounter(s: String) { def spaces = s.count(_.isWhitespace) } implicit def string_counts_spaces(s: String) = new SpaceCounter(s) scala&gt; "How many spaces do I have?".spaces res1: Int = 5 น่าเสียดายที่รูปแบบนี้ประสบปัญหาเมื่อจัดการกับคอลเลกชันทั่วไป ยกตัวอย่างเช่นจำนวนของคำถามที่ได้รับการถามเกี่ยวกับการจัดกลุ่มรายการตามลำดับกับคอลเลกชัน ไม่มีสิ่งใดในตัวที่ใช้งานได้ในช็อตเดียวดังนั้นสิ่งนี้จึงเป็นตัวเลือกที่เหมาะสำหรับรูปแบบการเติมเต็มห้องสมุดของฉันโดยใช้คอลเลกชันทั่วไปCและประเภทองค์ประกอบทั่วไปA: class SequentiallyGroupingCollection[A, C[A] &lt;: Seq[A]](ca: C[A]) { def groupIdentical: C[C[A]] = { if (ca.isEmpty) C.empty[C[A]] else …


1
วิธี HashSet <T> .removeAll นั้นช้าอย่างน่าตกใจ
เมื่อเร็ว ๆ นี้ Jon Skeet ได้ยกหัวข้อการเขียนโปรแกรมที่น่าสนใจในบล็อกของเขา: "มีช่องว่างในสิ่งที่เป็นนามธรรมของฉัน Liza ที่รัก Liza ที่รัก" (เน้นเพิ่มเติม): ฉันมีชุด - อันที่HashSetจริง ฉันต้องการลบบางรายการออกจากมัน ... และหลายรายการอาจไม่มีอยู่จริง อันที่จริงในกรณีทดสอบของเราไม่มีรายการใดในคอลเล็กชัน "การลบ" ที่จะอยู่ในชุดเดิม ฟังดู - และเป็นรหัสที่ง่ายมาก ท้ายที่สุดเราต้องSet&lt;T&gt;.removeAllช่วยเราใช่มั้ย? เราระบุขนาดของชุด "แหล่งที่มา" และขนาดของคอลเล็กชัน "การลบ" ในบรรทัดคำสั่งและสร้างทั้งสองชุด ชุดแหล่งที่มามีเฉพาะจำนวนเต็มที่ไม่เป็นลบ ชุดการลบมีเฉพาะจำนวนเต็มลบ เราวัดว่าต้องใช้เวลานานแค่ไหนในการลบองค์ประกอบทั้งหมดโดยใช้System.currentTimeMillis()ซึ่งไม่ใช่นาฬิกาจับเวลาที่แม่นยำที่สุดในโลก แต่เพียงพอแล้วในกรณีนี้อย่างที่คุณเห็น นี่คือรหัส: import java.util.*; public class Test { public static void main(String[] args) { int sourceSize = …

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