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

Core Java Library ของ Google สำหรับการพัฒนา Java และ Android

5
Google Guava vs. Apache Commons [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันกำลังมองหาการใช้งานแผนที่สองทิศทางใน Java และสะดุดกับทั้งสองห้องสมุด: Google Guava (เดิมชื่อ "Google Collections") Apache Commons Collections ทั้งสองฟรีใช้งานแผนที่สองทิศทางที่ฉันกำลังมองหา (BidiMap ใน Apache, BiMap ใน Google), มีขนาดเกือบจะน่าอัศจรรย์ (Apache 493 kB, Google 499 kB) [ed. ไม่จริงอีกต่อไป!] และดูเหมือน ในทุก ๆ ด้านคล้ายกับฉัน ฉันควรเลือกอันไหนและเพราะอะไร มีทางเลือกอื่นที่เทียบเท่า (ต้องฟรีและมีแผนที่สองทิศทางเป็นอย่างน้อย)? ฉันกำลังทำงานกับ Java SE ล่าสุดดังนั้นจึงไม่จำเป็นต้อง จำกัด Java 5 หรืออะไรทำนองนั้น

3
การเริ่มต้น Guava ImmutableMap
Guava เสนอทางลัดที่ดีสำหรับการเริ่มต้นแผนที่ อย่างไรก็ตามฉันได้รับข้อผิดพลาดคอมไพเลอร์ต่อไปนี้ (Eclipse Indigo) เมื่อแผนที่ของฉันเริ่มต้นกับเก้ารายการ วิธีการof(K, V, K, V, K, V, K, V, K, V)ในประเภทImmutableMapไม่สามารถใช้ได้กับข้อโต้แย้ง (String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String) ImmutableMap<String,String> myMap = ImmutableMap.of( "key1", "value1", "key2", "value2", "key3", "value3", "key4", "value4", "key5", "value5", "key6", "value6", …
140 java  dictionary  guava 

8
ห้องสมุด Guava: อะไรคือคุณสมบัติที่มีประโยชน์ที่สุดและ / หรือซ่อนอยู่? [ปิด]
มันยากที่จะบอกว่ากำลังถามอะไรที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือมีวาทศิลป์และไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันได้สแกนGuava APIอย่างรวดเร็วและประเภทคอลเลคชันใหม่ที่มีให้ ( MultimapและBiMapดูเหมือนว่ามีประโยชน์) และฉันกำลังคิดว่าจะรวมไลบรารีไว้ในโครงการที่ฉันทำงานอยู่ อย่างไรก็ตามฉันยังมีความจำเป็นที่จะรวมห้องสมุดไว้ด้วยความเต็มใจหากไม่มีประโยชน์อย่างยิ่งและการเรียนรู้คุณลักษณะนี้ทำให้เสียเวลาอันมีค่า คุณได้รวมไลบรารี Guava ไว้ในโครงการของคุณและได้รับการพิสูจน์แล้วว่ามีประโยชน์ในทางที่ไม่คาดคิดหรือไม่? คุณจะใช้มันในอนาคตหรือไม่? ประโยชน์หลัก / ประหยัดเวลาคืออะไร? คุณสมบัติที่ซ่อนอยู่คืออะไร?
131 java  guava 

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 : …

3
อะไรคือการปรับปรุงครั้งใหญ่ระหว่างไลบรารีที่เทียบเท่ากับ guava และ apache
ขณะนี้เราใช้คอลเลกชัน apache, เครื่องมือสตริงและอื่น ๆ ฉันต้องตัดสินใจว่าเราควรเปลี่ยนจากการใช้ฐานรากของ apache หรือไม่ เกณฑ์ที่สำคัญคือความสะดวกในการใช้งานของนักพัฒนา การใช้งานประสิทธิภาพ / หน่วยความจำยังไม่ใช่ประเด็นสำคัญสำหรับเรา ความเร็วของการพัฒนาเป็นเกณฑ์สำคัญในจุดนี้ ฉันขอขอบคุณความคิดเห็นเกี่ยวกับวิธีการที่ชีวิตของนักพัฒนากลายเป็นเรื่องง่ายขึ้นอย่างมากกับฝรั่ง

1
ควรใช้ไลบรารี Google Guava สำหรับการพัฒนา Android หรือไม่
ฉันมีส่วนร่วมในการพัฒนาแอปพลิเคชัน Android ซึ่งเป็นไคลเอนต์มือถือที่ค่อนข้าง "หนา" สำหรับบริการบนเว็บ มันสื่อสารกับเซิร์ฟเวอร์อย่างหนัก แต่ก็มีตรรกะภายในมากมายเช่นกัน ดังนั้นฉันจึงตัดสินใจใช้คุณสมบัติบางอย่างของGoogle Guavaไลบรารีเพื่อลดความซับซ้อนของกระบวนการพัฒนา นี่คือรายการคุณสมบัติที่ฉันสนใจมาก: คอลเลคชันที่ไม่เปลี่ยนรูป, ยูทิลิตี้พื้นฐาน, ส่วนขยายคอลเลคชัน, น้ำตาลการเขียนโปรแกรมเชิงฟังก์ชันและสำนวน ( common.collectและcommon.base), ยูทิลิตี้ดั้งเดิม ( common.primitives), ยูทิลิตี้แฮช ( common.hash), ยูทิลิตี้พร้อมกัน (ฟิวเจอร์สและAsyncFunction) สิ่งที่ฉันไม่ต้องการใช้ใน Android: common.cache(ดูคำถามด้านล่าง) common.eventbus(เรามี libs เฉพาะของ Android ที่ดีกว่าสำหรับสิ่งนี้เช่นOtto ) common.io(เราสามารถใช้okio สำหรับ Android ตอนนี้) ฉันอ่านพบว่าการใช้ Guava สำหรับ Android สามารถทำให้กระบวนการคอมไพล์ช้าลงอย่างมากและยังลดประสิทธิภาพรันไทม์ทั้งหมด: ประสิทธิภาพที่ ไม่ดีกับ Guava Cache บน Android (ในกรณีนี้ถือว่าสมเหตุสมผลและไม่จำเป็นต้องใช้แคชของ Guava …
122 java  android  guava 

11
อินเตอร์เฟส / enum แสดงรายการค่าคงที่ประเภท mime มาตรฐาน
ฉันกำลังมองหาไลบรารีมาตรฐาน (เช่น apache commons, jax, jboss, javax) สำหรับอินเทอร์เฟซหรือ enum ที่แสดงรายการค่าของ mime-type มาตรฐานทั้งหมด (aka content-type) อินเทอร์เฟซนี้ไม่ควรผูกมัดด้วยคลาสอื่น ๆ ที่ลึกเกินไปซึ่งจะทำให้รวมกลุ่มทั้งหมดเป็นซอร์สโค้ด gwt ได้ยาก ตัวอย่างเช่น interface ContentType{ String JSON = "Application/JSON"; blah ... blah ... } หรือ, enum ContentType{ JSON("Application/JSON"), blah ... blah ... }

18
การใช้งานแผนที่ด้วยคีย์ที่ซ้ำกัน
ฉันต้องการมีแผนที่ที่มีคีย์ซ้ำกัน ฉันรู้ว่ามีการใช้งานแผนที่มากมาย (Eclipse แสดงให้ฉันเห็นประมาณ 50) ดังนั้นฉันพนันได้เลยว่าจะต้องมีอย่างใดอย่างหนึ่งที่อนุญาตสิ่งนี้ ฉันรู้ว่ามันง่ายมากที่จะเขียนแผนที่ของคุณเองที่ทำสิ่งนี้ แต่ฉันอยากจะใช้วิธีแก้ปัญหาที่มีอยู่ อาจจะมีบางอย่างในคอลเลกชันทั่วไปหรือ Google คอลเลคชัน?

5
รวมหลายคอลเลกชันเป็นคอลเลกชันเชิงตรรกะเดียว?
สมมติว่าฉันมีคอลเล็กชันจำนวนคงที่ (เช่น 3 ArrayLists) ในฐานะสมาชิกของคลาส ตอนนี้ฉันต้องการเปิดเผยองค์ประกอบทั้งหมดไปยังคลาสอื่น ๆ เพื่อให้พวกเขาสามารถทำซ้ำองค์ประกอบทั้งหมดได้อย่างง่ายดาย (ควรอ่านอย่างเดียว) ฉันใช้คอลเลกชัน guava และฉันสงสัยว่าฉันจะใช้ guava iterables / iterators เพื่อสร้างมุมมองเชิงตรรกะบนคอลเลกชันภายในได้อย่างไรโดยไม่ต้องทำสำเนาชั่วคราว
110 java  collections  guava 

15
ผู้สร้าง HashMap
Guava ให้วิธีการโรงงานที่ยอดเยี่ยมสำหรับประเภท Java แก่เราเช่นMaps.newHashMap(). แต่ยังมีผู้สร้างสำหรับแผนที่ java ด้วยหรือไม่? HashMap<String,Integer> m = Maps.BuildHashMap. put("a",1). put("b",2). build();
109 java  collections  guava 

9
เทียบเท่าฝรั่งสำหรับ IOUtils.toString (InputStream)
Apache Commons IOมีวิธีการอำนวยความสะดวกที่ดีIOUtils.toString ()ในการอ่านInputStreamสตริง เนื่องจากฉันพยายามย้ายออกจาก Apache Commons และไปที่Guava : มี Guava เทียบเท่าหรือไม่? ฉันดูคลาสทั้งหมดในcom.google.common.ioแพ็กเกจแล้วก็ไม่พบอะไรง่ายๆเลย แก้ไข:ฉันเข้าใจและขอบคุณปัญหาเกี่ยวกับชุดอักขระ มันเกิดขึ้นมากจนฉันรู้ว่าแหล่งที่มาทั้งหมดของฉันอยู่ใน ASCII (ใช่ ASCII ไม่ใช่ ANSI เป็นต้น) ดังนั้นในกรณีนี้การเข้ารหัสไม่ใช่ปัญหาสำหรับฉัน
106 java  io  inputstream  guava 

7
Google Guava isNullOrEmpty สำหรับคอลเล็กชัน
ฉันเห็นว่า Guava มีวิธียูทิลิตี้ isNullOrEmpty สำหรับ Strings Strings.isNullOrEmpty(str) เรามีรายการที่คล้ายกันหรือไม่? สิ่งที่ต้องการ Lists.isNullOrEmpty(list) ซึ่งควรจะเทียบเท่ากับ list == null || list.isEmpty() นอกจากนี้เรามีอะไรที่คล้ายกันสำหรับ Arrays หรือไม่? สิ่งที่ต้องการ Arrays.isNullOrEmpty(arr) ซึ่งควรจะเทียบเท่ากับ arr == null || arr.length == 0
102 java  guava 

4
เพรดิเคตใน Java
ฉันกำลังอ่านโค้ดที่ใช้Predicateใน Java ฉันไม่เคยใช้Predicate. มีใครช่วยแนะนำฉันเกี่ยวกับบทช่วยสอนหรือคำอธิบายแนวความคิดPredicateและการนำไปใช้ใน Java ได้ไหม
101 java  guava  predicate 


12
วิธีย่อโค้ด - วิธี จำกัด 65k ใน dex
ฉันมีแอป Android ที่ค่อนข้างใหญ่ซึ่งอาศัยโครงการห้องสมุดจำนวนมาก คอมไพเลอร์ Android มีข้อ จำกัด 65536 เมธอดต่อไฟล์. dex และฉันเกินจำนวนนั้น โดยทั่วไปมีสองเส้นทางที่คุณสามารถเลือกได้ (อย่างน้อยก็ที่ฉันรู้) เมื่อคุณถึงขีด จำกัด วิธีการ 1) ย่อรหัสของคุณ 2) สร้างไฟล์ dex หลายไฟล์ ( ดูโพสต์บล็อกนี้ ) ฉันตรวจสอบทั้งสองอย่างและพยายามค้นหาว่าอะไรเป็นสาเหตุให้จำนวนวิธีของฉันสูงมาก Google Drive API เป็นกลุ่มที่ใหญ่ที่สุดด้วยการพึ่งพา Guava ที่มากกว่า 12,000 libs ทั้งหมดสำหรับ Drive API v2 สูงถึง 23,000! คำถามของฉันฉันเดาคือคุณคิดว่าฉันควรทำอย่างไร ฉันควรลบการรวม Google Drive ออกจากแอปของฉันหรือไม่ มีวิธีลดขนาด API ลงหรือไม่ (ใช่ฉันใช้ proguard) …

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