【深入理解(6)Java并发AQS的共享锁的实现(基于信号量Semaphore)】教程文章相关的互联网学习教程文章

java – 如何使用GSON反序列化Map【代码】

我是GSON的新手,并获得了这种格式的JSON响应(只是一个更简单的例子,因此值没有意义):{"Thomas": {"age": 32,"surname": "Scott"},"Andy": {"age": 25,"surname": "Miller"} }我希望GSON使它成为一个Map,PersonData显然是一个Object.名称字符串是PersonData的标识符. 正如我所说,我对GSON很新,只尝试过类似的东西:Gson gson = new Gson(); Map<String, PersonData> decoded = gson.fromJson(jsonString, new TypeToken<Map<String...

java – 如何根据Collection值的大小对Map进行排序?【代码】

我有一个像这样的HashMap:Map<String, List<String>> map = new HashMap<>();map.put("USA", Arrays.asList("CA","IA","IL")); map.put("India", Arrays.asList("MUM","CAL")); map.put("Canada", Arrays.asList("TOR"));我想根据列表值的大小按升序对地图进行排序.我怎样才能做到这一点? 在这种情况下,我希望按键订购加拿大,印度,美国.解决方法:HashMap没有保证的迭代顺序,因此您需要收集到LinkedHashMap才能使排序有意义.impor...

合并Map Java 8 Stream【代码】

我想将两个Map与JAVA 8 Stream合并:Map<String, List<String>> mapGlobal = new HashMap<String, List<String>>(); Map<String, List<String>> mapAdded = new HashMap<String, List<String>>();我尝试使用此实现:mapGlobal = Stream.of(mapGlobal, mapAdded).flatMap(m -> m.entrySet().stream()).collect(Collectors.groupingBy(Map.Entry::getKey,Collectors.mapping(Map.Entry::getValue, Collectors.toList())));但是...

java – Jackson:反序列化为每个值的类型正确的Map【代码】

我有一个如下所示的课程public class MyClass {private String val1;private String val2;private Map<String,Object> context;// Appropriate accessors removed for brevity.... }我希望能够与杰克逊一起往返于JSON并返回.我可以序列化上面的对象并收到以下输出:{"val1": "foo","val2": "bar","context": {"key1": "enumValue1","key2": "stringValue1","key3": 3.0} }我遇到的问题是,由于序列化映射中的值没有任何类型信息,因此...

java – 从键中以某个表达式开始的Map获取所有值的最快方法【代码】

考虑一下你有一张地图< String,Object> MYMAP. 给定表达式“some.string.*”,我必须从myMap中检索其键以此表达式开头的所有值. 我试图避免for循环,因为myMap将被赋予一组表达式,而不仅仅是一个表达式,并且每个表达式使用for循环变得非常麻烦. 最快的方法是什么?解决方法:如果使用NavigableMap(例如TreeMap),则可以使用基础树数据结构的优点,并执行类似这样的操作(具有O(lg(N))复杂度):public SortedMap<String, Object> getByPre...

java – 将表示键值对的字符串转换为Map【代码】

如何将String转换为Map:Map m = convert("A=4 H=X PO=87"); // What's convert? System.err.println(m.getClass().getSimpleName()+m);预期产量:HashMap{A=4, H=X, PO=87}解决方法:没有必要重新发明轮子. Google Guava库提供Splitter class. 以下是如何使用它以及一些测试代码:package com.sandbox;import com.google.common.base.Splitter; import org.junit.Test;import java.util.Map;import static org.junit.Assert.assert...

返回默认值而不是null的Java Map实现

我有一个Map< String,List< String>>在我的代码中,如果map的#get()方法返回一个空列表而不是null,我会避免使用潜在的空指针. java API中有这样的东西吗?我应该扩展HashMap吗?解决方法:@ Jon的回答是直接做你要求的好方法. 但令我感到震惊的是,您可能尝试实施的是“多图”;即从键到值集合的映射.如果是这种情况,那么您还应该查看Guava或Apache commons集合中的multimap类. 看着: > com.google.common.collect.Multimap接口及其实...

java – 使用stream和lambda展平Map> to Map【代码】

我想展平一个Map,它将一个Integer键与一个String列表相关联,而不会丢失键映射.我很好奇,好像使用stream和lambda这样做是有用的. 我们从这样的事情开始:Map<Integer, List<String>> mapFrom = new HashMap<>();我们假设mapFrom填充在某处,看起来像:1: a,b,c 2: d,e,f etc.我们还假设列表中的值是唯一的. 现在,我想“展开”它以获得第二张地图:a: 1 b: 1 c: 1 d: 2 e: 2 f: 2 etc.我可以这样做(或者非常相似,使用foreach):Map<St...

java – 为什么FileChannel.map占用Integer.MAX_VALUE数据?【代码】

我在使用FileChannel.map时遇到异常Exception in thread "main" java.lang.IllegalArgumentException: Size exceeds Integer.MAX_VALUEat sun.nio.ch.FileChannelImpl.map(Unknown Source)at niotest.NioTest.readUsingNio(NioTest.java:38)at niotest.NioTest.main(NioTest.java:64)快速查看OpenJdk实现显示FileChannelImpl中的方法map(..)将long类型的大小作为输入.但是在体内,它将它与Integer.MAX_VALUE进行比较,如果它大于那,则...

Java Generics:为什么Map.get()忽略类型?【代码】

参见英文答案 > What are the reasons why Map.get(Object key) is not (fully) generic 11个在Java中,Map接口定义为,public interface Map<K,V> {...V get(Object key);... }为什么不?V get(K key);我只是碰到了一个讨厌的bug,因为使用了错误的类型键.我认为泛型的目的是在编译期间尽早捕获类型错误.这会破坏这个目的吗?解决方法:Kevin Bourrillion blogged about this前一阵子.摘要:Unifo...

java – Groovy:使用JAX-B Object的特定属性创建Map【代码】

我有一个示例LEDES XML文件https://codebeautify.org/xmlviewer/cbdc79e7 使用JDK的xjc生成Ledesxmlebilling21类,如下所示,Ledes21.xsd schema https://codebeautify.org/xmlviewer/cb974a2exjc -d src ledes21.xsd我正在使用JAX-B将XML转换为Java对象,如下所示Ledesxmlebilling21 XMLtoObject(InputStream fis) throws Exception {JAXBContext context = JAXBContext.newInstance(Ledesxmlebilling21.class)Unmarshaller um = con...

list 转 map java8【代码】

// Arrays.asList("a:1.0", "b:2.0", "c:3.0") --> Map {a=1.0, b=2.0, c=3.0}Map<String, Double> kvs = new HashMap<>();Arrays.asList("a:1.0", "b:2.0", "c:3.0").stream().map(elem -> elem.split(":")).forEach(elem -> kvs.put(elem[0], Double.parseDouble(elem[1])));System.out.println(kvs.toString()); //Map<String, Double> kvs2 =Arrays.asList("a:1.0", "b:2.0", "c:3.0").stream().map(elem -> elem.split(":...

android – 类java.util.Map有泛型类型参数,请改用GenericTypeIndicator【代码】

我正在使用firebase从数据库中检索数据 Map< String,String> map = dataSnapshot.getValue(Map.class); 获取值,但它显示错误E/AndroidRuntime: FATAL EXCEPTION: mainProcess: com.rana.sahaj.myyu, PID: 13179com.google.firebase.database.DatabaseException: Class java.util.Map has generic type parameters, please use GenericTypeIndicator insteadat com.google.android.gms.internal.zzaix.zzb(Unknown Source)at com.go...

java – 有一个很好的方法让Map得到并放弃忽略大小写吗?【代码】

参见英文答案 > Case insensitive string as HashMap key 12个有没有一个很好的方法来获得Map< String,?>得到并放弃无视案例?解决方法:TreeMap扩展了Map并支持自定义比较器. String提供默认的不区分大小写的比较器. 所以:final Map<String, ...> map = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);比较器不考虑区域设置.在JavaDoc中阅读更多相关信息.

如何在Java中将Map转换为List?【代码】

转换Map< key,value>的最佳方法是什么?到列表< value>?只是迭代所有值并将它们插入列表中或者我忽略了什么?解决方法: List<Value> list = new ArrayList<Value>(map.values());假设:Map<Key,Value> map;

并发 - 相关标签