当前位置: 首页 > ops >正文

Java—— 可变参数、集合工具类、集合嵌套

可变参数

说明

1. 可变参数本质上就是一个数组
2. 作用:在形参中接收多个数据
3. 格式:数据类型...参数名称
        举例:int...a
4. 注意事项:
        形参列表中可变参数只能有一个
        可变参数必须放在形参列表的最后面

案例演示

定义一个方法,计算n个数相加后的结果 

public class Test1 {public static void main(String[] args) {int sum1 = getSum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);System.out.println(sum1);//55int sum2 = getSum(1, 2, 3, 4, 5);System.out.println(sum2);//15}//定义一个方法,计算n个数相加后的结果public static int getSum(int... nums) {int sum = 0;for (int n : nums) {sum = sum + n;}return sum;}
}

 集合工具类Collections

 Collections常用的API

方法名称说明

public static <T> boolean addA11

(Collection<T> c, T... elements)

批量添加元素

public static void shuffle(List<?> list)

打乱List集合

元素的顺序

public static <T> void sort(List<T> list)排序
public static <T> void sort(List<T> list, Comparator<T> c)

根据指定的

规则进行排序

public static <T> int binarySearch (List<T> list, T key)

以二分查找法

查找元素

public static<T> void copy(List<T> dest,List<T> src)拷贝集合中的元素
public static <T> int fill (List<T> list, T obj)

使用指定的元素

填充集合

public static <T> void max/min(Collection<T> coll)

根据默认的自然排

序获取最大/小值

public static <T> void swap(List<?> list,int i, int j)

交换集合中指定

位置的元素

代码演示

import java.util.ArrayList;
import java.util.Collections;public class Test2 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();Collections.addAll(list, "aaa", "bb", "ccc", "d", "ee", "f", "ggggg", "h");System.out.println(list);//[aaa, bb, ccc, d, ee, f, ggggg, h]Collections.shuffle(list);System.out.println(list);//[ee, aaa, ccc, ggggg, d, bb, h, f]Collections.sort(list);System.out.println(list);//[aaa, bb, ccc, d, ee, f, ggggg, h]Collections.sort(list, (o1, o2) -> o1.length() - o2.length());System.out.println(list);//[d, f, h, bb, ee, aaa, ccc, ggggg]int index = Collections.binarySearch(list, "bb");System.out.println(index);//3String max = Collections.max(list);System.out.println(max);//hString min = Collections.min(list);System.out.println(min);//aaaCollections.swap(list, 0, 1);System.out.println(list);//[f, d, h, bb, ee, aaa, ccc, ggggg]Collections.fill(list, "o");System.out.println(list);//[o, o, o, o, o, o, o, o]ArrayList<String> list2 = new ArrayList<>();Collections.addAll(list2, "1", "2", "3", "4", "5", "6", "7", "8");Collections.copy(list2, list);System.out.println(list2);//[o, o, o, o, o, o, o, o]}
}

集合嵌套

定义一个Map集合,键用表示省份名称province,值表示市city,但是市会有多个。
添加完毕后,遍历结果格式如下:
江苏省=南京市,扬州市,苏州市,无锡市,常州市
湖北省=武汉市,孝感市,十堰市,宜昌市,鄂州市
河北省=石家庄市,唐山市,邢台市,保定市,张家口市

import java.util.*;public class Test3 {public static void main(String[] args) {//定义集合存入城市ArrayList<String> city1 = new ArrayList<>();Collections.addAll(city1, "南京市", "扬州市", "苏州市", "无锡市", "常州市");ArrayList<String> city2 = new ArrayList<>();Collections.addAll(city2, "武汉市", "孝感市", "十堰市", "宜昌市", "鄂州市");ArrayList<String> city3 = new ArrayList<>();Collections.addAll(city3, "石家庄市", "唐山市", "邢台市", "保定市", "张家口市");//定义双列集合,键为省,值为城市集合//集合的嵌套也要有泛型的嵌套//第一个范式为String类型,第二个泛型为ArrayList类型,而ArrayList的泛型是StringHashMap<String, ArrayList<String>> hm = new HashMap<>();hm.put("江苏省", city1);hm.put("湖北省", city2);hm.put("河北省", city3);//遍历打印输出Set<Map.Entry<String, ArrayList<String>>> entries = hm.entrySet();for (Map.Entry<String, ArrayList<String>> entry : entries) {String key = entry.getKey();ArrayList<String> value = entry.getValue();//定义StringJoiner将值集合的元素拼接为字符串StringJoiner sj = new StringJoiner(",", "", "");for (String city : value) {sj.add(city);}System.out.println(key + " = " + sj);}//江苏省 = 南京市,扬州市,苏州市,无锡市,常州市//湖北省 = 武汉市,孝感市,十堰市,宜昌市,鄂州市//河北省 = 石家庄市,唐山市,邢台市,保定市,张家口市}
}
http://www.xdnf.cn/news/6126.html

相关文章:

  • Vue.js---嵌套的effect与effect栈
  • Maven构建流程详解:如何正确管理微服务间的依赖关系-当依赖的模块更新后,我应该如何重新构建主项目
  • D. Eating【Codeforces Round 1005 (Div. 2)】
  • Spring 中常见的属性注入方式(XML配置文件)
  • 单调栈简单习题分析
  • Web安全核心内容与常见漏洞总结
  • EasyConnect卸载大汇总
  • vulnhub靶场——secarmy
  • 动态多因子策略
  • RDD的自定义分区器
  • stm32 ADC单通道转换
  • 反射, 注解, 动态代理
  • 【PSINS工具箱】基于工具箱的单独GNSS导航、单独INS导航、两者结合组合导航,三种导航的对比程序。附完整的代码
  • 一文理解扩散模型(生成式AI模型)(2)
  • 使用 Docker Desktop 安装 Neo4j 知识图谱
  • VastBase的日常操作记录
  • Qt功能区:简介与安装
  • JS中本地存储(LocalStorage)和会话存储(sessionStorage)的使用和区别
  • vscode - 笔记
  • Deep Learning(手写字识别 - CNN)
  • Python算法思想
  • 企业级IP代理解决方案:负载均衡与API接口集成实践
  • 【导航信号模拟器】【MATLAB APP】MATLAB AppDesigner基本使用教程
  • DA14531如何在固件中生成与时间相关的mac和版本号
  • react+html-docx-js将页面导出为docx
  • 没经过我同意,flink window就把数据存到state里的了?
  • Java 大视界——Java 大数据在智慧交通智能停车诱导系统中的数据融合与实时更新
  • 命令行快速上传文件到SFTP服务器(附参考示例)
  • 灰度图像和RGB图像在数据大小和编码处理方式差别
  • lanqiaoOJ 652:一步之遥 ← 扩展欧几里得定理