可变参数和Collections集合工具类
可变参数
/**
* 可变参数:jdk1.5后出现的新特性
* 使用前期:
* 当方法的参数列表数据类型已经确定的时候但是参数的个数不确定的时候就可以使用可变参数
* 使用格式:定义方法的时候使用
* 修饰符 返回值类型 方法名(数据类型... 变量名){};
* 可变参数的原理:
* 可变参数的底层就是一个数组,根据传递参数个数不同他会创建不同长度的数组来存储这些参数
* 传递的参数个数可以是0个(不传递参数),1,2,...多个
*
* 可变参数使用的注意事项:
* 1.一个方法的参数列表只能有一个可变参数
* 2.如果方法的参数有多个,可变参数必须写在参数列表的末尾
* public static int add(int... arr,int i){}//错误
* public static int add(int i,int... arr){}//正确
*/
public class Test{
public static void main(String[] args) {
// int i = add();
// int i = add(1);
int i = add(1,2,4,5,6,7,8,9,6,3,4,1,1,0,1,0,10,10);
System.out.println(i);
}
/**
* 定义一个方法,计算(0 - n)个整数的方法
* 已知:计算整数的和,数据类型已经确定int
* 但是参数的个数不确定,不知道要计算几个整数的和
* 这个时候我们就可以使用可变参数
* add();就会创建一个长度为0的数组,new int[0];
* add(1);就会创建一个长度为1的数组,存储传递过来的参数,new int[]{1};
* add(1,2);就会创建一个长度为2的数组,存储传递过来的参数,new int[]{1,2};
*/
public static int add(int... arr){
//System.out.println(arr);//[I@7440e464 底层是一个数组
//System.out.println(arr.length);//0
//定义一个初始化的变量,来记录累加求和
int sum = 0;
//遍历这个数组来获取数组中的每一个元素
for (int i : arr) {
//累加求和
sum += i;
}
//把求和结果返回
return sum;
}
}
Collections集合工具类
常用功能
javajava.utils.Collections是集合工具类,用来堆对集合进行操作。部分方法如下:
javapublic static <T> boolean addAll(Collection<T> c.T... elements); 往集合中添加一些元素
javapublic static void shuffle(List<?> list) 打乱集合排序
javapublic static <T> void sort(List<T> list) 将集合元素按照默认规则进行排序
javapublic static <T> void sort(List<T> list,Comparator<? super T>) 将集合中元素按照制定规则进行排序
代码实现:
public class Test{
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
//addAll
Collections.addAll(list, "a", "b", "c", "d", "e", "f");
System.out.println(list);//[a, b, c, d, e, f]
//shuffle
Collections.shuffle(list);
System.out.println(list);//[f, c, a, e, d, b]
//sort
Collections.sort(list);
System.out.println(list);
}
}
public class Test{
public static void main(String[] args) {
/**
* 注意:
* 被排序的集合它里面存储的元素必须实现comparable,重写接口中的compareTo
*/
ArrayList<Person> list = new ArrayList<>();
list.add(new Person("张三",18));
list.add(new Person("李四",20));
list.add(new Person("王五",15));
System.out.println(list);//[Person{name='张三', age=18}, Person{name='李四', age=20}, Person{name='王五', age=15}]
Collections.sort(list);
System.out.println(list);//[Person{name='王五', age=15}, Person{name='张三', age=18}, Person{name='李四', age=20}]
}
}
class Person implements Comparable<Person>{
private String name;
private int age;
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Person(String name) {
this.name = name;
}
public Person() {
}
//重写排序的规则
@Override
public int compareTo(Person o) {
//return 0;//认为元素都是相同的
//自定义排序规则,比较两个人的年龄(this,和参数Person)
return this.getAge() - o.getAge();
}
}
可变参数和Collections集合工具类的更多相关文章
- 可变参数和Collections集合工具类的方法_addAll&shuffle
可变参数 可变参数:是JDK1.5之后出现的新特性 使用前提:当方法的参数列表数据类型已经确定,但是参数的个数不确定,就可以使用可变参数 使用格式:定义方法时使用 ~修饰符 返回值类型 方法名(数据类 ...
- java第十九天,Collections集合工具类的使用
Collections Java中集合都实现了Collection接口,那么针对集合一些特定的功能,有没有一个接口或类能够统一的集成一些集合必要的功能呢?当然能.它就是--Collections集合工 ...
- Collections集合工具类常用的方法
java.utils.Collections //是集合工具类,用来对集合进行操作.部分方法如下: public static <T> boolean addAll(Collection& ...
- Collections集合工具类的常用方法
Collections集合工具类的方法 addAll与shuffle import java.util.ArrayList; import java.util.Collections; /* - ja ...
- Collections集合工具类,集合嵌套,集合综合案例斗地主
1 Collections集合工具类 (可以对比Arrays工具类共同记忆) 常用方法: 例: import java.util.ArrayList; import java.util.Collect ...
- Collections 集合工具类
集合工具类 包括很多静态方法来操作集合list 而Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序.搜索以及线程安全等各种操作. 1) 排序( ...
- Collections集合工具类的方法_sort(List)和sort(List,Comparator)方法
Comparator比较器 我们还是先研究这个方法 public static <T> void sort(List<T> list):将集合中元素按照默认规则排序. 不过这次 ...
- [Guava学习笔记]Collections: 集合工具类
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3861431.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...
- Collections集合工具类和可变参数
Collections常用的API: public static <T> boolean addAll(Collection<? super T> c, T... elemen ...
随机推荐
- OracleRAC ACFS安装与卸载
目录 ACFS安装与卸载: 一.在RAC上手动安装ACFS/ADVM 模块的步骤如下: 1.验证内存中是否存在 ACFS/ADVM 模块: 2.用root用户重新安装ACFS/ADVM 模块: 3.A ...
- 1.还不会部署高可用的kubernetes集群?看我手把手教你使用二进制部署v1.23.6的K8S集群实践(上)
公众号关注「WeiyiGeek」 设为「特别关注」,每天带你玩转网络安全运维.应用开发.物联网IOT学习! 本章目录: 0x00 前言简述 0x01 环境准备 主机规划 软件版本 网络规划 0x02 ...
- 分布式下Session一致性架构举例
一.问题及方案 见这篇文章:分布式下Session一致性问题 二.分布式环境搭建: 系统环境 [root@centos7 ~]# cat /etc/redhat-release CentOS Linu ...
- 149_1秒获取Power BI Pro帐号
一.背景 当你来到这篇文章的时候,我想你已经在网上搜索了一圈了.网上有一大把教你如何注册Power BI帐号的方法,我们这里就不在赘述了.因为各种因素的限制确实比较麻烦.我们直接提供Power BI ...
- Unity-UGUI-无限循环列表
前言:项目准备新增一个竞技场排行榜,策划规定只显示0-400名的玩家.我一想,生成四百个游戏物体,怕不是得把手机给卡死?回想原来在GitHub上看到过一个实现思路就是无限循环列表,所以就想自己试试.公 ...
- Vben Admin 源码学习:项目初始化
0x00 前言 Vue-Vben-Admin 是一个免费开源的中后台模版.使用了最新的vue3,vite2,TypeScript等主流技术开发,开箱即用的中后台前端解决方案考. 本系列本着学习参考的目 ...
- Crane-scheduler:基于真实负载进行调度
作者 邱天,腾讯云高级工程师,负责腾讯云 TKE 动态调度器与重调度器产品. 背景 原生 kubernetes 调度器只能基于资源的 resource request 进行调度,然而 Pod 的真实资 ...
- 关于一些lrzsz的知识
问题:如何从windows轻松上传文件到Linux? 方法:容器里面:apt-get update && apt-get install lrzsz 有yum的情况:yum -y in ...
- mybatis-plus对空字段 时间进行填充
package com.tanhua.sso.handler; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; imp ...
- v-if和v-for哪个优先级更高?
首先在实际开发阶段,不应该把v-if和v-for在同一个标签中使用, 在vue2中,v-for的优先级是高于v-if的,如果同时出现,每次渲染都会先执行循环再判断条件,无论如何循环都不可避免,浪费了性 ...