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

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

9
วิธีการเริ่มต้นรายการ Tuples ได้อย่างง่ายดาย?
ฉันรักtuples ช่วยให้คุณสามารถจัดกลุ่มข้อมูลที่เกี่ยวข้องเข้าด้วยกันได้อย่างรวดเร็วโดยไม่ต้องเขียน struct หรือคลาสของมัน สิ่งนี้มีประโยชน์มากในขณะที่ refactoring รหัสที่แปลเป็นภาษาท้องถิ่นมาก การเริ่มต้นรายการของพวกเขา แต่ดูเหมือนว่าซ้ำซ้อน var tupleList = new List<Tuple<int, string>> { Tuple.Create( 1, "cow" ), Tuple.Create( 5, "chickens" ), Tuple.Create( 1, "airplane" ) }; ไม่มีวิธีที่ดีกว่านี้หรือ ฉันจะรักวิธีการแก้ปัญหาตามสายของที่initializer พจนานุกรม Dictionary<int, string> students = new Dictionary<int, string>() { { 111, "bleh" }, { 112, "bloeh" }, { 113, …

4
Collection.stream (). forEach () และ Collection.forEach () แตกต่างกันอย่างไร?
ฉันเข้าใจว่าด้วย.stream()ฉันสามารถใช้การปฏิบัติการลูกโซ่เช่น.filter()หรือใช้กระแสข้อมูลแบบขนาน แต่อะไรคือความแตกต่างระหว่างพวกเขาหากฉันต้องการดำเนินการเล็ก ๆ (เช่นการพิมพ์องค์ประกอบของรายการ) collection.stream().forEach(System.out::println); collection.forEach(System.out::println);

12
Java: รับไอเท็มแรกจากคอลเล็กชัน
หากฉันมีคอลเล็กชันเช่นCollection<String> strsฉันจะนำไอเท็มแรกออกมาได้อย่างไร ฉันสามารถเรียกIteratorใช้ครั้งแรกnext()แล้วโยนIteratorออกไป มีวิธีที่สิ้นเปลืองน้อยลงหรือไม่?

10
.NET HashTable Vs Dictionary - พจนานุกรมสามารถเร็วได้หรือไม่
ฉันพยายามที่จะคิดออกว่าเมื่อไหร่และทำไมต้องใช้พจนานุกรมหรือ HashTable ฉันได้ทำการค้นหาเล็กน้อยที่นี่และพบว่ามีคนพูดถึงข้อดีทั่วไปของพจนานุกรมที่ฉันเห็นด้วยอย่างสมบูรณ์ซึ่งนำไปสู่ความได้เปรียบในการชกมวยและการแกะกล่องเพื่อเพิ่มประสิทธิภาพเล็กน้อย แต่ฉันได้อ่านพจนานุกรมจะไม่กลับวัตถุตามลำดับที่พวกเขาจะแทรกสิ่งที่เรียงลำดับ HashTable จะอยู่ที่ไหน ในขณะที่ฉันเข้าใจว่าสิ่งนี้นำไปสู่ ​​HashTable ที่เร็วขึ้นสำหรับบางสถานการณ์ คำถามของฉันเป็นจริงสถานการณ์เหล่านั้นอาจเป็นอย่างไร ฉันแค่คิดผิดไปจากข้อสันนิษฐานข้างต้นหรือไม่? คุณอาจใช้สถานการณ์ใดในการเลือกสถานการณ์หนึ่งเหนือสถานการณ์อื่น (ใช่สถานการณ์สุดท้ายค่อนข้างคลุมเครือ)

8
ตรงข้ามของ Intersect ()
สามารถใช้ Intersect เพื่อค้นหารายการที่ตรงกันระหว่างสองคอลเล็กชันดังนี้: // Assign two arrays. int[] array1 = { 1, 2, 3 }; int[] array2 = { 2, 3, 4 }; // Call Intersect extension method. var intersect = array1.Intersect(array2); // Write intersection to screen. foreach (int value in intersect) { Console.WriteLine(value); // Output: 2, 3 } อย่างไรก็ตามสิ่งที่ฉันต้องการบรรลุคือสิ่งที่ตรงกันข้ามฉันต้องการแสดงรายการจากคอลเล็กชันหนึ่งที่หายไปจากรายการอื่น …

19
วิธีการโคลน ArrayList และการโคลนเนื้อหาได้อย่างไร
ฉันจะโคลนArrayListและโคลนรายการใน Java ได้อย่างไร เช่นฉันมี: ArrayList<Dog> dogs = getDogs(); ArrayList<Dog> clonedList = ....something to do with dogs.... และฉันคาดหวังว่าวัตถุในclonedListนั้นจะไม่เหมือนกับรายการสุนัข

9
วิธีการสุ่ม ArrayLists สองแบบในแบบเดียวกันได้อย่างไร
ฉันมี arraylist สองรายการfilelistและimgListเกี่ยวข้องกันเช่น "H1.txt" ที่เกี่ยวข้องกับ "e1.jpg" วิธีการสุ่มรายการโดยอัตโนมัติimgListตามการสุ่มของfileList? เช่นเดียวกับใน excel ถ้าเราจัดเรียงคอลัมน์บางคอลัมน์คอลัมน์อื่นจะตามมาโดยอัตโนมัติ String [] file = {"H1.txt","H2.txt","H3.txt","M4.txt","M5.txt","M6.txt"}; ArrayList<String> fileList = new ArrayList<String>(Arrays.asList(file)); String [] img = {"e1.jpg","e2.jpg","e3.jpg","e4.jpg","e5.jpg","e6.jpg"}; ArrayList<String> imgList = new ArrayList<String>(Arrays.asList(img)); //randomized files Collections.shuffle(fileList); ผลลัพธ์หลังจากการสุ่มเช่น: fileList = {"M4.txt","M6.txt","H3.txt","M5.txt","H2.txt","H1.txt"}; เอาท์พุทตั้งใจ: imgList = {"e4.jpg","e6.jpg","e3.jpg","e5.jpg","e2.jpg","e1.jpg"};

8
ฉันจะโอเวอร์โหลดตัวดำเนินการตัวยึดสี่เหลี่ยมใน C # ได้อย่างไร
ตัวอย่างเช่น DataGridView ให้คุณทำสิ่งนี้: DataGridView dgv = ...; DataGridViewCell cell = dgv[1,5]; แต่สำหรับชีวิตของฉันฉันไม่พบเอกสารในตัวดำเนินการ index / square-bracket พวกเขาเรียกว่าอะไร มันใช้งานที่ไหน มันโยนได้มั้ย ฉันจะทำสิ่งเดียวกันในชั้นเรียนของตัวเองได้อย่างไร การทางพิเศษแห่งประเทศไทย: ขอบคุณสำหรับคำตอบอย่างรวดเร็วทั้งหมด สั้น ๆ : เอกสารที่เกี่ยวข้องอยู่ภายใต้คุณสมบัติ "รายการ" วิธีในการโอเวอร์โหลดคือการประกาศคุณสมบัติเช่นpublic object this[int x, int y]{ get{...}; set{...} }; ตัวสร้างดัชนีสำหรับ DataGridView ไม่ส่งอย่างน้อยตามเอกสาร ไม่ได้พูดถึงสิ่งที่เกิดขึ้นหากคุณให้พิกัดที่ไม่ถูกต้อง การทางพิเศษแห่งประเทศไทยอีกครั้ง: ตกลงแม้ว่าเอกสารจะไม่พูดถึงมัน (ซุกซน Microsoft!) แต่ปรากฎว่าตัวสร้างดัชนีสำหรับ DataGridView ในความเป็นจริงแล้วจะโยน ArgumentOutOfRangeException เตือนภัย

16
วิธีง่ายๆในการค้นหาว่ามีสองรายการที่แตกต่างกันมีองค์ประกอบที่เหมือนกันหรือไม่?
วิธีที่ง่ายที่สุดในการค้นหาคือถ้ารายการสองรายการมีองค์ประกอบเดียวกันในไลบรารี Java มาตรฐานหรือไม่ ไม่สำคัญว่าทั้งสองรายการจะเป็นอินสแตนซ์เดียวกันหรือไม่และไม่สำคัญว่าพารามิเตอร์ประเภทของรายการจะแตกต่างกันหรือไม่ เช่น List list1 List<String> list2; // ... construct etc list1.add("A"); list2.add("A"); // the function, given these two lists, should return true อาจมีบางอย่างจ้องมองฉันในหน้าฉันรู้ :-) แก้ไข: เพื่อชี้แจงฉันกำลังมองหาองค์ประกอบที่แน่นอนเดียวกันและจำนวนขององค์ประกอบในการสั่งซื้อ
253 java  collections 

15
วนซ้ำรายการในลำดับย้อนกลับใน java
ฉันกำลังโยกย้ายรหัสเพื่อใช้ประโยชน์จาก Generics อาร์กิวเมนต์หนึ่งสำหรับการทำเช่นนั้นคือ for for loop นั้นสะอาดกว่าการติดตามดัชนีหรือใช้ตัววนซ้ำอย่างชัดเจน ในกรณีประมาณครึ่งหนึ่งรายการ (ArrayList) จะถูกทำซ้ำในลำดับย้อนกลับโดยใช้ดัชนีวันนี้ ใครช่วยแนะนำวิธีที่สะอาดกว่าในการทำสิ่งนี้ (ตั้งแต่ฉันไม่ชอบindexed for loopเมื่อทำงานกับคอลเลกชัน) แม้ว่ามันจะใช้งานได้? for (int i = nodes.size() - 1; i >= 0; i--) { final Node each = (Node) nodes.get(i); ... } หมายเหตุ:ฉันไม่สามารถเพิ่มการอ้างอิงใหม่นอก JDK
251 java  collections 

17
คุณจะเลือก List of supertypes เป็น List of subtypes ได้อย่างไร
ตัวอย่างเช่นสมมติว่าคุณมีสองคลาส: public class TestA {} public class TestB extends TestA{} ฉันมีวิธีที่ผลตอบแทนList<TestA>และฉันต้องการที่จะโยนวัตถุทั้งหมดในรายการที่จะเพื่อที่ฉันจบลงด้วยTestBList<TestB>

7
Collections.emptyList () กับอินสแตนซ์ใหม่
ในทางปฏิบัติมันเป็นดีกว่าที่จะกลับรายการที่ว่างเปล่าเช่นนี้ : return Collections.emptyList(); หรือชอบนี้ : return new ArrayList<Foo>(); หรือสิ่งนี้ขึ้นอยู่กับสิ่งที่คุณจะทำกับรายการที่ส่งคืน?

5
รายการ <T> รับประกันคำสั่งแทรกหรือไม่
บอกว่าฉันมี 3 สายในรายการ (เช่น "1", "2", "3") จากนั้นฉันต้องการเรียงลำดับใหม่ให้วาง "2" ในตำแหน่ง 1 (เช่น "2", "1", "3") ฉันใช้รหัสนี้ (การตั้งค่า indexToMoveTo เป็น 1): listInstance.Remove(itemToMove); listInstance.Insert(indexToMoveTo, itemToMove); ดูเหมือนว่าจะใช้งานได้ แต่บางครั้งฉันก็ได้ผลลัพธ์ที่แปลก บางครั้งคำสั่งซื้อไม่ถูกต้องหรือรายการจากรายการจะถูกลบ! ความคิดใด ๆ ไม่List&lt;T&gt;เพื่อรับประกัน? ที่เกี่ยวข้อง: List &lt;T&gt; รับประกันว่าจะมีการส่งคืนสินค้าตามลำดับที่ถูกเพิ่มเข้าไปหรือไม่?
238 c#  .net  collections 

18
ทำไม java.util.Set จึงไม่ได้รับ (ดัชนี int)
ฉันแน่ใจว่ามีเหตุผลที่ดี แต่มีคนช่วยอธิบายได้ว่าทำไมjava.util.Setอินเทอร์เฟซขาดget(int Index)หรือget()วิธีการที่คล้ายกัน? ดูเหมือนว่าฉากนั้นยอดเยี่ยมมากสำหรับการใส่สิ่งต่าง ๆ แต่ฉันไม่สามารถหาวิธีที่สง่างามในการรับไอเท็มชิ้นเดียวจากมัน ถ้าฉันรู้ว่าฉันต้องการไอเท็มแรกฉันสามารถใช้set.iterator().next()แต่อย่างอื่นมันดูเหมือนว่าฉันต้องส่ง Array เพื่อดึงไอเท็มที่ดัชนีเฉพาะหรือไม่? วิธีการที่เหมาะสมในการดึงข้อมูลจากชุดคืออะไร? (นอกเหนือจากการใช้ตัววนซ้ำ) ฉันแน่ใจว่าความจริงที่ว่ามันถูกแยกออกจาก API หมายความว่ามีเหตุผลที่ดีที่จะไม่ทำสิ่งนี้ - ใครบางคนได้โปรดให้ความรู้แก่ฉันได้ไหม แก้ไข: คำตอบที่ยอดเยี่ยมบางอย่างที่นี่และบางคำพูดที่ว่า "บริบทเพิ่มเติม" สถานการณ์เฉพาะคือการทดสอบ dbUnit ซึ่งฉันสามารถยืนยันได้อย่างสมเหตุสมผลว่าชุดที่ส่งคืนจากแบบสอบถามมีเพียง 1 รายการและฉันพยายามเข้าถึงรายการนั้น อย่างไรก็ตามคำถามจะมีความถูกต้องมากขึ้นหากไม่มีสถานการณ์สมมติเนื่องจากยังคงเน้นไปที่: ความแตกต่างระหว่างชุดและรายการคืออะไร ขอบคุณทุกคำตอบที่น่าอัศจรรย์ด้านล่าง


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