个旧市做网站公司海南省建设工程执业中心网站

张小明 2026/1/19 22:05:12
个旧市做网站公司,海南省建设工程执业中心网站,哪个电商平台好做,婚恋网站排名前十名1. Guava入门基础 1.1 什么是Google Guava Google Guava是由Google开发并开源的一个Java核心库,它提供了许多JDK没有的功能,帮助开发者编写更简洁、更安全、更高效的代码。 Guava的核心目标包括: 提供实用的集合类型和工具类 增强I/O功能 实用的并发工具 常用的字符串处理…1. Guava入门基础1.1 什么是Google GuavaGoogle Guava是由Google开发并开源的一个Java核心库,它提供了许多JDK没有的功能,帮助开发者编写更简洁、更安全、更高效的代码。Guava的核心目标包括:提供实用的集合类型和工具类增强I/O功能实用的并发工具常用的字符串处理功能缓存实现和其他有用的工具1.2 Guava的发展历程与版本演进Guava最初源于Google内部的"Google Collections Library",于2010年开源并更名为Guava。Guava遵循语义化版本控制,定期发布新版本,持续添加新功能和改进现有功能。主要里程碑:2010年:首次发布为开源项目持续更新:每季度发布新版本功能扩展:从单纯的集合库发展为综合性工具库1.3 为什么选择Guava使用Guava的主要优势:提高开发效率// 不使用Guava的传统写法ListStringlist=newArrayList();list.add("apple");list.add("banana");list.add("orange");// 使用Guava的简洁写法ListStringlist=Lists.newArrayList("apple","banana","orange");减少样板代码// 传统方式检查nullif(name!=null!name.isEmpty()){// 处理name}// 使用Guava的Strings工具if(!Strings.isNullOrEmpty(name)){// 处理name}增强代码安全性// 创建不可变集合,防止意外修改ImmutableListStringimmutableList=ImmutableList.of("a","b","c");// immutableList.add("d"); // 编译时报错1.4 环境搭建与依赖配置在Maven项目中添加Guava依赖:dependencygroupIdcom.google.guava/groupIdartifactIdguava/artifactIdversion32.1.3-jre/version/dependency在Gradle项目中添加依赖:implementation 'com.google.guava:guava:32.1.3-jre'简单的使用示例:importcom.google.common.collect.Lists;importcom.google.common.base.Strings;publicclassGuavaExample{publicstaticvoidmain(String[]args){// 使用Guava创建列表ListStringfruits=Lists.newArrayList("apple","banana","orange");// 使用Guava字符串工具Stringname=" Lingma ";if(!Strings.isNullOrEmpty(name)){System.out.println("Hello, "+name.trim());}}}2. 集合工具类详解2.1 不可变集合:ImmutableList、ImmutableMap、ImmutableSet不可变集合一旦创建就不能被修改,这有助于:防止意外修改数据线程安全可作为常量使用// 创建不可变列表ImmutableListStringimmutableList=ImmutableList.of("apple","banana","orange");ImmutableListStringcopiedList=ImmutableList.copyOf(Arrays.asList("one","two","three"));// 创建不可变映射ImmutableMapString,IntegerimmutableMap=ImmutableMap.of("apple",1,"banana",2,"orange",3);// 使用builder模式创建复杂不可变集合ImmutableMapString,IntegerbuiltMap=ImmutableMap.String,Integerbuilder().put("key1",1).put("key2",2).put("key3",3).build();// 尝试修改会抛出UnsupportedOperationException异常try{immutableList.add("grape");}catch(UnsupportedOperationExceptione){System.out.println("Cannot modify immutable collection");}2.2 新集合类型:Multimap、Multiset、BiMapGuava提供了多种新的集合类型来解决特定问题:// Multimap:一个键可以对应多个值MultimapString,Stringmultimap=ArrayListMultimap.create();multimap.put("fruit","apple");multimap.put("fruit","banana");multimap.put("vegetable","carrot");multimap.put("vegetable","broccoli");System.out.println(multimap.get("fruit"));// [apple, banana]// Multiset:可以统计元素出现次数的集合MultisetStringmultiset=HashMultiset.create();multiset.add("apple");multiset.add("banana");multiset.add("apple");multiset.add("orange");multiset.add("apple");System.out.println(multiset.count("apple"));// 3System.out.println(multiset.elementSet());// [apple, banana, orange]// BiMap:双向映射,键和值都唯一BiMapString,IntegerbiMap=HashBiMap.create();biMap.put("one",1);biMap.put("two",2);biMap.put("three",3);System.out.println(biMap.get("one"));// 1System.out.println(biMap.inverse().get(2));// two2.3 集合操作工具:Lists、Maps、SetsGuava提供了丰富的静态工具方法来操作集合:// Lists工具类ListIntegernumbers=Lists.newArrayList(1,2,3,4,5);ListListIntegerpartitions=Lists.partition(numbers,2);// [[1, 2], [3, 4], [5]]// 创建笛卡尔积ListStringcolors=Lists.newArrayList("red","blue");ListStringshapes=Lists.newArrayList("circle","square");ListListStringcartesianProduct=Lists.cartesianProduct(colors,shapes);// [[red, circle], [red, square], [blue, circle], [blue, square]]// Maps工具类MapString,Stringmap1=Maps.newHashMap();map1.put("key1","value1");map1.put("key2","value2");// 创建带默认值的映射MapString,IntegerdefaultMap=Maps.newHashMap();Integervalue=Maps.safeGet(defaultMap,"nonexistent",0);// 返回默认值0// Sets工具类SetIntegerset1=Sets.newHashSet(1,2,3);SetIntegerset2=Sets.newHashSet(3,4,5);SetIntegerunion=Sets.union(set1,set2);// {1, 2, 3, 4, 5}SetIntegerintersection=Sets.intersection(set1,set2);// {3}SetIntegerdifference=Sets.difference(set1,set2);// {1, 2}2.4 集合工厂方法与创建器模式Guava提供了多种创建集合的方式:// 工厂方法创建集合ListStringlist=Lists.newArrayList("a","b","c");SetIntegerset=Sets.newHashSet(1,2,3);MapString,Integermap=Maps.newHashMap();// 使用Builder模式创建复杂集合ImmutableList.BuilderStringbuilder=ImmutableList.builder();builder.add("first").add("second").addAll(Arrays.asList("third","fourth")).add("fifth");ImmutableListStringresult=builder.build();// 创建容量预设的集合ListStringpreSizedList=Lists.newArrayListWithExpectedSize(100);SetIntegerpreSizedSet=Sets.newHashSetWithExpectedSize(50);3. 函数式编程支持3.1Function接口与转换操作Function接口用于将一种类型的对象转换为另一种类型:importcom.google.common.base.Function;importcom.google.common.collect.Collections2;// 定义转换函数FunctionString,IntegerstringLengthFunction=newFunctionString,Integer(){@OverridepublicIntegerapply(Stringinput){returninput.length();}};// 使用转换函数ListStringwords=Arrays.asList("hello","world","java","guava");CollectionIntegerlengths=Collections2.transform(words,stringLengthFunction);System.out.println(lengths);// [5, 5, 4, 5]// 使用Lambda表达式(Java 8+)FunctionString,StringupperCaseFunction=String::toUpperCase;CollectionStringupperWords=Collections2.transform(words,upperCaseFunction);System.out.println(upperWords);// [HELLO, WORLD, JAVA, GUAVA]3.2Predicate接口与过滤操作Predicate接口用于判断对象是否满足某种条件:importcom.google.common.base.Predicate;importcom.google.common.collect.Collections2;// 定义谓词PredicateStringlongWordPredicate=newPredicateString(){@Overridepublicbooleanapply(Stringinput){returninput.length()4;}};// 使用过滤器ListStringwords=Arrays.asList("hello","hi","world","java","go");CollectionStringfilteredWords=Collections2.filter(words,longWordPredicate);System.out.println(filteredWords);// [hello, world]// 组合谓词PredicateStringshortWordPredicate=newPredicateString(){@Overridepublicbooleanapply(Stringinput){returninput.length()5;}};// AND组合PredicateStringandPredicate=Predicates.and(longWordPredicate,shortWordPredicate);// OR组合PredicateStringorPredicate=Predicates.or(longWordPredicate,shortWordPredicate);// NOT组合PredicateStringnotPredicate=Predicates.not(longWordPredicate);// 使用Lambda表达式PredicateStringlambdaPredicate=s-s.startsWith("h");CollectionStringstartsWithH=Collections2.filter(words,lambdaPredicate);System.out.println(startsWithH);// [hello, hi]3.3Optional类:避免空指针异常Optional用于优雅地处理可能为空的值:importcom.google.common.base.Optional;// 创建Optional实例OptionalStringpresentOptional=Optional.of("Hello");OptionalStringabsentOptional=Optional.absent();OptionalStringfromNullableOptional=Optional.fromNullable(null);// 检查值是否存在if(presentOptional.isPresent()){System.out.println("Value: "+presentOptional.get());}// 提供默认值StringvalueOrDefault=absentOptional.or("default");System.out.println(valueOrDefault);// default// 使用orNull获取可能为null的值StringnullableValue=fromNullableOptional.orNull();System.out.println(nullableValue);// null// 转换Optional中的值OptionalIntegerlengthOptional=presentOptional.transform(String::length);System.out.println(lengthOptional.get());// 5// 实际应用场景publicOptionalStringfindUserEmail(LonguserId){// 模拟数据库查询if(userId==1L){returnOptional.of("user@example.com");}else{returnOptional.absent();}}// 使用OptionalOptionalStringemail=findUserEmail(1L);if(email.isPresent()){System.out.println("Email: "+email.get());}else{System.out.println("User not found");}3.4 Fluent API设计模式实践Fluent API让代码更加流畅易读:importcom.google.common.collect.Ordering;// Ordering示例ListStringwords=Arrays.asList("banana","apple","cherry","date");// 链式调用排序OrderingStringbyLengthOrdering=Ordering.natural().onResultOf((Stringstr)-str.length()).compound(Ordering.natural());ListStringsortedWords=byLengthOrdering.sortedCopy(words);System.out.println(sortedWords);// [date, apple, banana, cherry]// 复杂排序示例ListPersonpersons=Arrays.asList(newPerson("Alice",25),newPerson("Bob",30),newPerson("Charlie",25));OrderingPersonpersonOrdering=Ordering.natural().onResultOf((Personp)-p.getAge()).compound(Ordering.natural().onResultOf((Personp)-p.getName()));ListPersonsortedPersons=personOrdering.sortedCopy(persons);4. 字符串处理利器4.1Strings工具类的使用Strings工具类提供了许多实用的字符串处理方法:importcom.google.common.base.Strings;// 检查字符串是否为空或nullSystem.out.println(Strings.isNullOrEmpty(null));// trueSystem.out.println(Strings.isNullOrEmpty(""));// trueSystem.out.println(Strings.isNullOrEmpty(" "));// false// 填充字符串StringpaddedLeft=Strings.padStart("7",3,'0');System.out.println(paddedLeft);// "007"StringpaddedRight=Strings.padEnd("7",3,'0');System.out.println(paddedRight);// "700"// 重复字符串Stringrepeated=Strings.repeat("abc",3);System.out.println(repeated);// "abcabcabc"// 获取公共前缀StringcommonPrefix=Strings.commonPrefix("hello","help");System.out
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站栏目页模板discuz网站模板下载

AUTOSAR接口设计:从“拼乐高”说起,看懂汽车软件如何高效协作你有没有想过,一辆高端智能汽车里藏着上百个电子控制单元(ECU),它们像是分布在车身各处的“小脑”,有的管发动机,有的控…

张小明 2026/1/17 18:10:31 网站建设

用手机做网站视频做系统下载网站建设

如何稳、准、快地完成 HBuilderX 下载与安装?90% 的问题都出在这两个细节上 你有没有遇到过这种情况:兴致勃勃想开始一个 Uni-app 项目,打开浏览器准备下载 HBuilderX,结果“正在连接…”卡了十分钟;好不容易下完了&a…

张小明 2026/1/17 18:10:30 网站建设

网站定制开发收费标准是多少知更鸟wordpress设置注册

导语:近日,一款名为MachineLearningLM的新型AI模型正式发布,该模型通过持续预训练技术突破了大语言模型在表格数据预测任务中的上下文学习限制,可处理多达1024个示例的"千样本学习",为数据科学领域带来重要技…

张小明 2026/1/17 18:10:31 网站建设

用织梦做的网站好用吗非微信官方网页自己做的网站

人事管理 目录 基于springboot vue人事管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue人事管理系统 一、前言 博主介绍:✌️大…

张小明 2026/1/17 18:10:33 网站建设

郑州做网站公司 卓美哪里有建设好的网站

目录已开发项目效果实现截图开发技术系统开发工具:核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式&…

张小明 2026/1/17 18:10:35 网站建设

企装网怎么样百度seo怎么样优化

从文本到数字人讲解视频:使用Linly-Talker全流程实操记录 在教育、客服、直播等场景中,我们越来越频繁地看到“虚拟主播”登场——他们口齿清晰、表情自然,仿佛真人出镜。但背后是否真的需要一支动画团队逐帧制作?答案是否定的。如…

张小明 2026/1/17 18:10:35 网站建设