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

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

9
ฉันควรส่งคืนคอลเล็กชันหรือสตรีมหรือไม่
สมมติว่าฉันมีวิธีที่ส่งกลับมุมมองแบบอ่านอย่างเดียวในรายการสมาชิก: class Team { private List < Player > players = new ArrayList < > (); // ... public List < Player > getPlayers() { return Collections.unmodifiableList(players); } } นอกจากนี้สมมติว่าลูกค้าทั้งหมดทำซ้ำในรายการทันที อาจจะนำผู้เล่นเข้าสู่ JList หรืออะไรบางอย่าง ลูกค้าไม่ได้จัดเก็บการอ้างอิงไปยังรายการสำหรับการตรวจสอบในภายหลัง! ในสถานการณ์ทั่วไปนี้ฉันควรส่งคืนสตรีมแทนหรือไม่ public Stream < Player > getPlayers() { return players.stream(); } หรือส่งคืนสตรีมที่ไม่มีลักษณะเฉพาะใน Java หรือไม่ สตรีมที่ออกแบบมาให้ "ยุติ" …

19
การเปรียบเทียบสองคอลเลกชันเพื่อความเท่าเทียมกันโดยไม่คำนึงถึงลำดับของรายการในพวกเขา
ฉันต้องการเปรียบเทียบคอลเลกชันสอง (ใน C #) แต่ฉันไม่แน่ใจว่าวิธีที่ดีที่สุดในการใช้งานได้อย่างมีประสิทธิภาพ ฉันได้อ่านหัวข้ออื่น ๆ เกี่ยวกับEnumerable.SequenceEqualแต่ไม่ใช่สิ่งที่ฉันต้องการ ในกรณีของฉันคอลเลกชันสองรายการจะเท่ากันถ้าทั้งคู่มีรายการเดียวกัน (ไม่ว่าจะเรียงตามลำดับ) ตัวอย่าง: collection1 = {1, 2, 3, 4}; collection2 = {2, 4, 1, 3}; collection1 == collection2; // true สิ่งที่ฉันมักจะทำคือการวนดูแต่ละไอเท็มของคอลเล็กชันหนึ่งและดูว่ามีอยู่ในคอลเลกชันอื่นหรือไม่จากนั้นวนลูปผ่านแต่ละรายการของคอลเลกชันอื่น (ฉันเริ่มจากการเปรียบเทียบความยาว) if (collection1.Count != collection2.Count) return false; // the collections are not equal foreach (Item item in collection1) { if (!collection2.Contains(item)) …

8
การรวบรวม <T> กับรายการ <T> คุณควรใช้อะไรในส่วนต่อประสานของคุณ
รหัสดูเหมือนว่าด้านล่าง: namespace Test { public interface IMyClass { List&lt;IMyClass&gt; GetList(); } public class MyClass : IMyClass { public List&lt;IMyClass&gt; GetList() { return new List&lt;IMyClass&gt;(); } } } เมื่อฉันเรียกใช้การวิเคราะห์รหัสฉันได้รับคำแนะนำต่อไปนี้ คำเตือน 3 CA1002: Microsoft.Design: เปลี่ยน 'รายการ' ใน 'IMyClass.GetList ()' เพื่อใช้ Collection, ReadOnlyCollection หรือ KeyedCollection ฉันจะแก้ไขสิ่งนี้และวิธีปฏิบัติที่ดีที่นี่ได้อย่างไร

20
เรียงลำดับการรวบรวมใน Java
ฉันเป็นผู้เริ่มต้นใน Java กรุณาแนะนำคอลเลกชันที่สามารถ / ควรใช้สำหรับการรักษารายการเรียงลำดับใน Java ฉันได้พยายามMapและSetแต่พวกเขาก็ไม่ได้สิ่งที่ผมกำลังมองหา

5
ฉันจะเริ่มต้น ArrayList ด้วยศูนย์ทั้งหมดใน Java ได้อย่างไร
ดูเหมือนว่าarraylistจะไม่ทำงานเพื่อ presising: // presizing ArrayList&lt;Integer&gt; list = new ArrayList&lt;Integer&gt;(60); หลังจากนั้นเมื่อฉันพยายามเข้าถึง: list.get(5) แทนที่จะกลับ 0 มันจะพ่นIndexOutOfBoundsException: ดัชนี 5 ออกจากขอบเขตสำหรับความยาว 0 มีวิธีการเริ่มต้นองค์ประกอบทั้งหมดถึง 0 ของขนาดที่แน่นอนเช่น C ++ อะไร?
161 java  collections 


28
เลือก N องค์ประกอบสุ่มจากรายการ <T> ใน C #
ฉันต้องการอัลกอริทึมด่วนเพื่อเลือก 5 องค์ประกอบแบบสุ่มจากรายการทั่วไป ตัวอย่างเช่นผมต้องการที่จะได้รับ 5 List&lt;string&gt;องค์ประกอบสุ่มจาก

5
พจนานุกรมตัวพิมพ์เล็กและตัวพิมพ์ใหญ่พร้อมสตริงของคีย์ใน C #
ถ้าฉันมีDictionary&lt;String,...&gt;มันเป็นไปได้ที่จะทำวิธีการเช่นContainsKeyกรณีตาย? ดูเหมือนจะเกี่ยวข้องกัน แต่ฉันไม่เข้าใจอย่างถูกต้อง: c # Dictionary: การทำให้ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ผ่านการประกาศ

22
จะตรวจสอบว่า IEnumerable เป็นโมฆะหรือว่างเปล่าได้อย่างไร?
ฉันรักstring.IsNullOrEmptyวิธีการ ฉันชอบที่จะมีบางสิ่งบางอย่างที่จะช่วยให้การทำงานเดียวกันสำหรับ IEnumerable มีแบบนี้เหรอ? บางทีคลาสตัวช่วยในการรวบรวมข้อมูล เหตุผลที่ผมถามคือว่าในงบลักษณะรหัสรกถ้าลายคือif (mylist != null &amp;&amp; mylist.Any())มันจะสะอาดFoo.IsAny(myList)กว่าที่คิด โพสต์นี้ไม่ได้ให้คำตอบว่า: IEnumerable ว่างเปล่า? .

4
จะเรียงตัวนับตามค่าอย่างไร? - งูหลาม
นอกเหนือจากการทำความเข้าใจรายการของความเข้าใจรายการที่กลับรายการมีวิธีไพโธนิกในการจัดเรียงตัวนับตามค่าหรือไม่? ถ้าเป็นเช่นนั้นจะเร็วกว่านี้: &gt;&gt;&gt; from collections import Counter &gt;&gt;&gt; x = Counter({'a':5, 'b':3, 'c':7}) &gt;&gt;&gt; sorted(x) ['a', 'b', 'c'] &gt;&gt;&gt; sorted(x.items()) [('a', 5), ('b', 3), ('c', 7)] &gt;&gt;&gt; [(l,k) for k,l in sorted([(j,i) for i,j in x.items()])] [('b', 3), ('a', 5), ('c', 7)] &gt;&gt;&gt; [(l,k) for k,l in sorted([(j,i) for i,j …


3
Java Map ที่เทียบเท่าใน C #
ฉันพยายามเก็บรายการไว้ในคอลเลคชั่นด้วยกุญแจที่ฉันเลือก ใน Java ฉันจะใช้ Map ดังนี้: class Test { Map&lt;Integer,String&gt; entities; public String getEntity(Integer code) { return this.entities.get(code); } } มีวิธีที่เท่าเทียมกันในการทำเช่นนี้ใน C # หรือไม่? System.Collections.Generic.Hashsetไม่ใช้แฮชและฉันไม่สามารถกำหนดคีย์ประเภทที่กำหนดเอง System.Collections.Hashtableไม่ใช่คลาสทั่วไป System.Collections.Generic.Dictionaryไม่มีget(Key)วิธีการ
150 c#  java  generics  collections 

4
เรียงลำดับรายการจากรหัสรายการอื่น
ฉันมีรายการที่มีตัวระบุบางอย่างเช่นนี้: List&lt;long&gt; docIds = new List&lt;long&gt;() { 6, 1, 4, 7, 2 }; Morover ฉันมีรายการอีกรายการหนึ่ง&lt;T&gt;ซึ่งมีรหัสตามที่อธิบายไว้ข้างต้น List&lt;T&gt; docs = GetDocsFromDb(...) ฉันต้องรักษาลำดับที่เหมือนกันในทั้งสองคอลเล็กชันเพื่อให้รายการในList&lt;T&gt;ต้องอยู่ในตำแหน่งเดียวกันมากกว่าอันดับแรก (เนื่องจากเหตุผลในการให้คะแนนของเครื่องมือค้นหา) และกระบวนการนี้ไม่สามารถทำได้ในGetDocsFromDb()ฟังก์ชั่น หากจำเป็นก็เป็นไปได้ที่จะเปลี่ยนรายการที่สองเป็นโครงสร้างอื่น ๆ ( Dictionary&lt;long, T&gt;ตัวอย่าง) แต่ฉันไม่ต้องการเปลี่ยนมัน มีวิธีที่ง่ายและมีประสิทธิภาพในการทำ "ordenation ขึ้นอยู่กับบาง ID" กับ LINQ หรือไม่?
150 c#  linq  sorting  collections 

5
การตรวจสอบว่ารายการไม่ว่างใน Hamcrest
ฉันสงสัยว่าใครรู้วิธีการตรวจสอบว่ารายการว่างเปล่าใช้assertThat()และMatchers? วิธีที่ดีที่สุดที่ฉันเห็นเพียงใช้ JUnit: assertFalse(list.isEmpty()); แต่ฉันหวังว่าจะมีวิธีการทำเช่นนี้ใน Hamcrest


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