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

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

1
ฉันจะรับรายการจากคุณสมบัติคลาสบางอย่างด้วย Java 8 Stream ได้อย่างไร
ฉันมีList<Person>. ฉันต้องการได้รับListจากทรัพย์สินของPerson. ตัวอย่างเช่นฉันมีPersonชั้นเรียน: class Person { private String name; private String birthDate; public String getName() { return name; } public String getBirthDate() { return birthDate; } Person(String name) { this.name = name; } } List<Person> personList = new ArrayList<>(); personList.add(new Person("David")); personList.add(new Person("Joe")); personList.add(new Person("Michel")); personList.add(new Person("Barak")); ฉันต้องการรับรายชื่อด้วยStreamAPI ดังนี้: List<String> …


8
เหตุใด ConcurrentModificationException จึงถูกโยนทิ้งและวิธีการดีบัก
ฉันกำลังใช้ a Collection( HashMapใช้ทางอ้อมโดย JPA มันก็เกิดขึ้น) แต่ดูเหมือนจะสุ่มรหัสพ่น a ConcurrentModificationException. สาเหตุเกิดจากอะไรและจะแก้ไขปัญหานี้ได้อย่างไร โดยใช้การซิงโครไนซ์บางที? นี่คือการติดตามสแต็กแบบเต็ม: Exception in thread "pool-1-thread-1" java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(Unknown Source) at java.util.HashMap$ValueIterator.next(Unknown Source) at org.hibernate.collection.AbstractPersistentCollection$IteratorProxy.next(AbstractPersistentCollection.java:555) at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:296) at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:242) at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:219) at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169) at org.hibernate.engine.Cascade.cascade(Cascade.java:130)

8
ฉันจะสร้างรายการหรืออาร์เรย์ของจำนวนเต็มตามลำดับใน Java ได้อย่างไร
มีวิธีที่สั้นและไพเราะในการสร้าง a List<Integer>หรืออาจเป็น Integer[]หรือint[]ด้วยค่าลำดับจากค่าบางstartค่าเป็นendค่าหนึ่ง? นั่นคือสิ่งที่สั้นกว่า แต่เทียบเท่ากับ1สิ่งต่อไปนี้: void List<Integer> makeSequence(int begin, int end) { List<Integer> ret = new ArrayList<>(end - begin + 1); for (int i=begin; i<=end; i++) { ret.add(i); } return ret; } ฝรั่งใช้ก็ใช้ได้ ปรับปรุง: การวิเคราะห์ประสิทธิภาพ เนื่องจากคำถามนี้ได้รับคำตอบที่ดีหลายประการทั้งการใช้ Java 8 ดั้งเดิมและไลบรารีของบุคคลที่สามฉันจึงคิดว่าจะทดสอบประสิทธิภาพของโซลูชันทั้งหมด การทดสอบครั้งแรกเป็นการทดสอบการสร้างรายการองค์ประกอบ 10 รายการ[1..10]โดยใช้วิธีการต่อไปนี้: classicArrayList : รหัสที่ให้ไว้ข้างต้นในคำถามของฉัน (และโดยพื้นฐานแล้วเหมือนกับคำตอบของ adarshr) eclipseCollections : …

15
การพิมพ์ HashMap ใน Java
ฉันมีHashMap: private HashMap<TypeKey, TypeValue> example = new HashMap<TypeKey, TypeValue>(); ตอนนี้ฉันต้องการเรียกใช้ค่าทั้งหมดและพิมพ์ออกมา ฉันเขียนสิ่งนี้: for (TypeValue name : this.example.keySet()) { System.out.println(name); } ดูเหมือนจะไม่ได้ผล อะไรคือปัญหา? แก้ไข: คำถามอื่น: คอลเลกชันนี้ใช้ศูนย์หรือไม่? ฉันหมายความว่าถ้ามี 1 คีย์และค่าขนาดจะเป็น 0 หรือ 1?
129 java  collections 

10
การสร้างพจนานุกรมคงที่ใน C #
วิธีใดที่มีประสิทธิภาพที่สุดในการสร้างการแม็ปค่าคงที่ (ไม่เปลี่ยนแปลงที่รันไทม์) ของstrings ถึงints คืออะไร ฉันได้ลองใช้const Dictionaryแล้ว แต่ก็ไม่ได้ผล ฉันสามารถใช้กระดาษห่อหุ้มที่ไม่เปลี่ยนรูปได้ด้วยความหมายที่เหมาะสม แต่ก็ยังดูไม่ถูกต้องทั้งหมด สำหรับผู้ที่ถามฉันกำลังใช้IDataErrorInfoในคลาสที่สร้างขึ้นและกำลังมองหาวิธีที่จะทำให้การค้นหา columnName ในอาร์เรย์ของตัวอธิบายของฉัน ฉันไม่รู้ (พิมพ์ผิดเมื่อทดสอบ! d'oh!) สวิตช์ที่ยอมรับสตริงนั่นคือสิ่งที่ฉันจะใช้ ขอบคุณ!

7
ฉันควรใช้ Java Collection ใด
ในคำถามนี้ฉันจะเลือกคอนเทนเนอร์ไลบรารีมาตรฐานใน C ++ 11 อย่างมีประสิทธิภาพได้อย่างไร เป็นผังงานที่มีประโยชน์เพื่อใช้เมื่อเลือกคอลเลกชัน C ++ ฉันคิดว่านี่เป็นแหล่งข้อมูลที่มีประโยชน์สำหรับผู้ที่ไม่แน่ใจว่าควรใช้คอลเลคชันใดดังนั้นฉันจึงพยายามค้นหาผังงานที่คล้ายกันสำหรับ Java และไม่สามารถทำได้ มีทรัพยากรและ "ข้อมูลสรุป" อะไรบ้างที่ช่วยให้ผู้คนเลือกคอลเล็กชันที่เหมาะสมเพื่อใช้เมื่อเขียนโปรแกรมใน Java ผู้คนรู้ได้อย่างไรว่าควรใช้ List, Set และ Map อะไร

7
การผูกรายการใน @RequestParam
ฉันกำลังส่งพารามิเตอร์จากแบบฟอร์มด้วยวิธีนี้: myparam[0] : 'myValue1' myparam[1] : 'myValue2' myparam[2] : 'myValue3' otherParam : 'otherValue' anotherParam : 'anotherValue' ... ฉันรู้ว่าฉันสามารถรับพารามิเตอร์ทั้งหมดในเมธอดคอนโทรลเลอร์ได้โดยการเพิ่มพารามิเตอร์เช่น public String controllerMethod(@RequestParam Map<String, String> params){ .... } ฉันต้องการผูกพารามิเตอร์ myParam [] (ไม่ใช่พารามิเตอร์อื่น ๆ ) กับรายการหรืออาร์เรย์ (อะไรก็ตามที่เก็บลำดับดัชนี) ดังนั้นฉันจึงลองใช้ไวยากรณ์เช่น: public String controllerMethod(@RequestParam(value="myParam") List<String> myParams){ .... } และ public String controllerMethod(@RequestParam(value="myParam") String[] myParams){ .... } …

8
วิธีที่ง่ายที่สุดในการแปลงคอลเลคชันเป็นอาร์เรย์?
สมมติว่าเรามีไฟล์Collection<Foo>. วิธีที่ดีที่สุด (สั้นที่สุดใน LoC ในบริบทปัจจุบัน) ในการแปลงเป็นFoo[]อย่างไร ใด ๆที่รู้จักกันดีในห้องสมุดได้รับอนุญาต UPD: (กรณีหนึ่งที่เพิ่มเติมในส่วนนี้; ความคิดเห็นลาถ้าคุณคิดว่ามันคุ้มค่าที่จะสร้างหัวข้ออื่นมัน): สิ่งที่เกี่ยวกับการเปลี่ยนCollection<Foo>ไปBar[]ที่Barมีคอนสตรัค 1 พารามิเตอร์ชนิดFooเช่นpublic Bar(Foo foo){ ... }?

5
ฉันจะสร้างชุดของชุดใน Python ได้อย่างไร
ฉันกำลังพยายามสร้างชุดใน Python ฉันคิดไม่ออกว่าจะทำอย่างไร เริ่มต้นด้วยชุดว่างxx: xx = set([]) # Now we have some other set, for example elements = set([2,3,4]) xx.add(elements) แต่ฉันเข้าใจ TypeError: unhashable type: 'list' หรือ TypeError: unhashable type: 'set' เป็นไปได้ไหมที่จะมีชุดของชุดใน Python? ฉันกำลังจัดการกับชุดสะสมจำนวนมากและฉันต้องการที่จะไม่ต้องจัดการกับชุดที่ซ้ำกัน (ชุด B ของชุด A1, A2, .... , ฉันจะ "ยกเลิก" สองชุดถ้า Ai = Aj)

16
เปลี่ยนลำดับความสำคัญคิวเป็นคิวลำดับความสำคัญสูงสุด
ฉันมีลำดับความสำคัญของคิวใน Java of Integers: PriorityQueue<Integer> pq= new PriorityQueue<Integer>(); เมื่อฉันโทรหาpq.poll()ฉันจะได้รับองค์ประกอบขั้นต่ำ คำถาม: จะเปลี่ยนรหัสอย่างไรเพื่อให้ได้องค์ประกอบสูงสุด?

5
ReadOnlyCollection หรือ IEnumerable สำหรับการเปิดเผยคอลเลกชันของสมาชิก?
มีเหตุผลใดหรือไม่ที่จะเปิดเผยคอลเลกชันภายในเป็น ReadOnlyCollection แทนที่จะเป็น IEnumerable หากรหัสการโทรวนซ้ำบนคอลเลกชันเท่านั้น class Bar { private ICollection<Foo> foos; // Which one is to be preferred? public IEnumerable<Foo> Foos { ... } public ReadOnlyCollection<Foo> Foos { ... } } // Calling code: foreach (var f in bar.Foos) DoSomething(f); อย่างที่ฉันเห็น IEnumerable เป็นส่วนย่อยของอินเทอร์เฟซของ ReadOnlyCollection และไม่อนุญาตให้ผู้ใช้แก้ไขคอลเล็กชัน ดังนั้นหากอินเทอร์เฟซ IEnumberable เพียงพอนั่นคือสิ่งที่ต้องใช้ นั่นเป็นวิธีที่เหมาะสมในการหาเหตุผลเกี่ยวกับเรื่องนี้หรือฉันพลาดอะไรไป? ขอบคุณ …

10
รับค่าสตริงจาก HashMap ขึ้นอยู่กับชื่อคีย์
ฉันมีHashMapคีย์และค่าต่างๆฉันจะเอาค่าหนึ่งออกมาได้อย่างไร ฉันมีคีย์ในแผนที่ที่เรียกว่าmy_codeมันควรมีสตริงฉันจะรับมันได้อย่างไรโดยไม่ต้องวนซ้ำผ่านแผนที่ จนถึงตอนนี้ฉันมี .. HashMap newMap = new HashMap(paramMap); String s = newMap.get("my_code").toString(); ฉันคาดหวังว่าจะเห็น a Stringเช่น "ABC" หรือ "DEF" ซึ่งเป็นสิ่งที่ฉันใส่ไว้ในตอนแรก แต่ถ้าฉันทำSystem.out.println()ฉันจะได้รับสิ่งที่ชอบjava.lang.string#F0454 ขอโทษค่ะฉันไม่ค่อยคุ้นเคยกับแผนที่เท่าที่คุณจะเดาได้;)

7
เหตุใด Java Collections จึงไม่สามารถจัดเก็บประเภท Primitives ได้โดยตรง
คอลเลกชัน Java จัดเก็บเฉพาะ Objects ไม่ใช่ประเภทดั้งเดิม อย่างไรก็ตามเราสามารถจัดเก็บคลาส Wrapper ได้ ทำไมต้องมีข้อ จำกัด นี้

15
คุณสมบัติ Thread-safe List <T>
ฉันต้องการนำไปใช้List&lt;T&gt;เป็นคุณสมบัติที่สามารถใช้เธรดได้อย่างปลอดภัยโดยไม่ต้องสงสัย สิ่งนี้: private List&lt;T&gt; _list; private List&lt;T&gt; MyT { get { // return a copy of _list; } set { _list = value; } } ดูเหมือนว่าฉันยังต้องส่งคืนสำเนา (โคลน) ของคอลเลกชันดังนั้นหากมีที่ไหนสักแห่งที่เรากำลังทำซ้ำคอลเลกชันและในเวลาเดียวกันก็มีการตั้งค่าคอลเล็กชันจะไม่มีการเพิ่มข้อยกเว้น วิธีใช้คุณสมบัติการรวบรวมเธรดที่ปลอดภัย

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