LinkedHashSet集合和可变参数
LinkedHashSet集合
我们知道HashSet保证元素唯一,可是元素存放进去是没有顺序的,那么我们要保证有序,怎么办呢?
在HashSet下面有一个子类java.util.LinkedHashSet,它是链表和哈希表组合的一个数据存储结构。
java.utiL.LinkedHashset集合extends Hashset集合LinkedHashset集合特点:
底层是一个哈希表(数组+链表/红黑树)+链表:多了一条链表(记录元素的存储顺序),保证元素有序
public static void main(String[] args) { HashSet<String> set = new HashSet<>(); set.add( "www" ); set.add( "abc" ); set.add( "abc" ); set.add( "itcast" ); System.out.println(set);//无序,不允许重复 LinkedHashSet<String> linked = new LinkedHashSet<>(); linked.add( "www" ); linked.add("abc"); linked.add("abc"); linked.add( "itcast" ); System.out.println(linked);//有序,不允许重复 }
public class LinkedHashT { public static void main(String[] args) { //创建一个LinkedHashSet集合: LinkedHashSet<Integer> lhs = new LinkedHashSet<>(); System.out.println(lhs.add(9));//true lhs.add(5); lhs.add(8); System.out.println(lhs.add(9));//false 这个9没有放入到集合中 lhs.add(6); System.out.println(lhs.size());//4 唯一,有序 System.out.println(lhs); //[9, 5, 8, 6] } }
可变参数
概念
在JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类型一致,我们可以对其简化
格式:
修饰符 返回值类型 方法名(参数类型...形参名){}
其实这个书写完全等价与
修饰符 返回值类型 方法名(参数类型门]形参名){}
只是后面这种定义,在调用时必须传递数组,而前者可以直接传递数据即可。
JDK1.5以后。出现了简化操作。...用在参数上,称之为可变参数。
同样是代表数组,但是在调用这个带有可变参数的方法时,不用创建数组(这就是简单之处),直接将数组中的元素作为实际参数进行传递,其实编译成的class文件,将这些元素先封装到一个数组中,在进行传递。这些动作都在编译.class文件时,白动完成了
可变参数:是JDK1.5之后出现的新特性
使用前提:
当方法的参数列表数据类型已经确定,但是参数的个数不确定,就可以使用可变参数.
使用格式:定义方法时使用
修饰符返 回值类型 方法名(数据类型...变量名){}
可变参数的原理:
可变参数底层就是一个数组,根据传递参数个数不同,会创建不同长度的数组,来存储这些参数
传递的参数个数,可以是o个(不传递),1,2...多个
public static void main(String[] args) { /* 定义计算(0-n)整数和的方法 已知:计算整数的和,数据类型已经确定int 但是参数的个数不确定,不知道要计算几个整数的和,就可以使用可变参数 public static int add(int. . .arr){ } //定义一个方法,计算三个int类型整数的和 */ int i = add(12,12); System.out.println(i); } public static int add(int...arr){ // System.out.println(arr); // System.out.println(arr.length); int num = 0; for (int i :arr){ num+=i; } return num; } // public static int add(int a,int b,int c){ // return a+b+c; // } // //定义一个方法,计算两个int类型整数的和 // public static int add (int a,int b) { //
package com.zhong.method; public class Demo04{ public static void main(String args[]) { //调用可变参数的方法 printMax(...numbers:34,3,3,2,56.5); printMax(new double[]{1,2,3}); } public static void printMax(double... numbers){ //double... 就是声明方法 参数类型。 numbers 就是可变参数 if(numbers.length==0) { //可变参数的长度等于0 System.out.println("No argument passed"); return; } double result = numbers[0]; //返回值result;numbers[0]是数组。 //排序! for (int i = 1;i < numbers,length; i++){ if (numbers[i]>result){ result = numbers[i]; } } System.out.println("The max value is" + result); }
package com.zhong.method; public class Demo04 { public static void main(String [] args){ Demo04 demo04 = new Demo04(); //新建一个类返回当前对象 demo04.tset(x:1,...i:1,2,3,4,5,90); //这就是数值 } public void test(int x,int... i){//可变参数 i System.out.println(0); System.out.println(1); System.out.println(2); System.out.println(3); System.out.println(4); System.out.println(5); } Scanner scanner = new Scanner(System.in); System.out.println("hello,world!"); scanner.close(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix