可变参数

/**
* 可变参数: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集合工具类的更多相关文章

  1. 可变参数和Collections集合工具类的方法_addAll&shuffle

    可变参数 可变参数:是JDK1.5之后出现的新特性 使用前提:当方法的参数列表数据类型已经确定,但是参数的个数不确定,就可以使用可变参数 使用格式:定义方法时使用 ~修饰符 返回值类型 方法名(数据类 ...

  2. java第十九天,Collections集合工具类的使用

    Collections Java中集合都实现了Collection接口,那么针对集合一些特定的功能,有没有一个接口或类能够统一的集成一些集合必要的功能呢?当然能.它就是--Collections集合工 ...

  3. Collections集合工具类常用的方法

    java.utils.Collections //是集合工具类,用来对集合进行操作.部分方法如下: public static <T> boolean addAll(Collection& ...

  4. Collections集合工具类的常用方法

    Collections集合工具类的方法 addAll与shuffle import java.util.ArrayList; import java.util.Collections; /* - ja ...

  5. Collections集合工具类,集合嵌套,集合综合案例斗地主

    1 Collections集合工具类 (可以对比Arrays工具类共同记忆) 常用方法: 例: import java.util.ArrayList; import java.util.Collect ...

  6. Collections 集合工具类

    集合工具类  包括很多静态方法来操作集合list 而Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序.搜索以及线程安全等各种操作. 1) 排序( ...

  7. Collections集合工具类的方法_sort(List)和sort(List,Comparator)方法

    Comparator比较器 我们还是先研究这个方法 public static <T> void sort(List<T> list):将集合中元素按照默认规则排序. 不过这次 ...

  8. [Guava学习笔记]Collections: 集合工具类

    我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3861431.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...

  9. Collections集合工具类和可变参数

    Collections常用的API: public static <T> boolean addAll(Collection<? super T> c, T... elemen ...

随机推荐

  1. axios源码解析 - 请求方法的别名实现

    axios中的创建请求方式很多,比如axios(url),axios.get(url),axios.post(url),axios.delete(url),方便快捷的api设计让axios火得一塌糊涂 ...

  2. strlen获取字符数组为什么是255

    为什么是255呢? strlen函数的规则是,读取到0则判断字符串结束. char为1字节,只有8位. 所以...... -1就是 1111 1111, -2就是 1111 1110, 直到-128: ...

  3. 56. Merge Intervals - LeetCode

    Question 56. Merge Intervals Solution 题目大意: 一个坐标轴,给你n个范围,把重叠的范围合并,返回合并后的坐标对 思路: 先排序,再遍历判断下一个开始是否在上一个 ...

  4. 113_Power Pivot 销售订单之重复购买率及购买间隔天数相关

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 1.背景 在论坛中看到朋友在提复购率(重复购买率)等相关问题,今天把结果贴出来. 问题原贴:计算订单中的老顾客复购率 感谢 ...

  5. CefSharp 白屏问题

    原文 现象 我正在使用 cefsharp + winform 建立一个桌面程序用于显示网页.使用过程中程序会突然白屏,经过观察发现,在网页显示GIF动图时,浏览器子程序会突然占用较高内存(从80M上升 ...

  6. 基于“均态分布”随机数算法的一次性口令OneTimePassword(原创)

    /* 所谓均态分布随机数算法是指:每个数(整数或实数)无序地分布在数轴上,值只出现一次永不重复.体现了香农的一次一密理论. * 均体现在每个数的值是平均概率,即都有出现:态体现在每个数在数轴上的位置是 ...

  7. DYOJ 【20220317模拟赛】瞬间移动 题解

    瞬间移动 题意 三维空间中从 \((0,0,0)\) 开始,每次移动 1,问刚好走 \(N\) 次能到 \((X,Y,Z)\) 的方案数 \(N\le10^7\),答案模 \(998244353\) ...

  8. c++ FHQ Treap

    前面我们对平衡树有了个大概的了解 关于 Treap Treap=Binary Search Tree + Heap 二叉搜索树 + 二叉堆(一般是小根堆) Treap 每一个节点有两个值 一个值是平衡 ...

  9. Django——表单

    一.前言 看了下教程,以为表单很简单呢,结果搞了一两个钟才弄懂,哈哈哈,所以说不要小瞧每一件事. 先说明下HTTP请求: HTTP协议以"请求-回复"的方式工作.客户发送请求时,可 ...

  10. 循环码、卷积码及其python实现

    摘要:本文介绍了循环码和卷积码两种编码方式,并且,作者给出了两种编码方式的编码译码的python实现 关键字:循环码,系统编码,卷积码,python,Viterbi算法 循环码的编码译码 设 \(C\ ...