今天学习了可变参数和两种容器(ArrayList和HashMap)。
可变参数
1、 位置
方法形参的最后一个位置,同类型的数据个数可变
2、写法
。。。
例:String。。。
3、使用
同一维数组 ,使用时更灵活
方法签名: 方法名+形参类型、个数(与名称无关) 保证唯一性
一个类中可以存在多个同名的方法,签名必须唯一 关注形参不能相同
就近最优原则: 先找自己的签名相同的,没有找其他匹配(兼容的)
签名案例
*/
public class VarTest02{
public static void main(String… args){
int sum =add(“求三个数的和”,1,2,3,4); //(String,int,int,int,int) -->(String,int,int,int…)签名
System.out.println(sum);
}
/**
若干数的和
add(String,int,int,int...)签名
*/
public static int add(String tips,int a,int b,int... arr){
System.out.println(tips+"---1----");
int sum =0;
for(int e:arr){
sum +=e;
}
return sum;
}
/**
若干数的和
add(String,double,int,int...)签名
*/
public static int add(String tips,double a,int b,int... arr){
System.out.println(tips+"---2----");
int sum =0;
for(int e:arr){
sum +=e;
}
return sum;
}
案例
import java.util.ArrayList; //定位
public class ArrayListTest02{
public static void main(String… args){
//左边为引用,右边为对象
ArrayList list = new ArrayList();
//使用
list.add(20.0); //不要放20
list.add(18.5);
list.add(100.0);
list.add(0,10.0); //插入元素
double totalCost =0.0;
for(Double money:list){
totalCost += money;
}
System.out.println(totalCost);
}
}
api的应用案例
修改 set(位置,新的数据)
删除 remove()
import java.util.ArrayList; //定位锤子
import java.util.Random;
public class ArrayListTest03{
public static void main(String… args){
//左边为引用,右边为对象
ArrayList list = new ArrayList();
//存储5个随机整数 [5,100]
for(int i=0;i<5;i++){
int num = rnd(5,100);
list.add(num);
}
//修改索引为2的元素为100
list.set(2,100);
//输出所有的元素
for(Integer temp:list){
System.out.println(temp);
}
//删除第二个元素
list.remove(2);
System.out.println("----------");
for(Integer temp:list){
System.out.println(temp);
}
}
/**
产生[min,max]随机整数
返回随机整数
*/
public static int rnd(int min,int max){
Random rnd = new Random();
int num = rnd.nextInt(max-min+1)+min; //[min,max]
return num;
}
}
获取 get(位置) size() contains(元素) indexOf(元素)
import java.util.ArrayList;
import java.util.Random;
public class ArrayListTest04{
public static void main(String… args){
//左边为引用,右边为对象
ArrayList list = new ArrayList();
//存储5个随机整数 [5,100]
for(int i=0;i<5;i++){
int num = rnd(5,100);
list.add(num);
}
//获取
int first = list.get(0);
System.out.println(first);
int three = list.get(2);
System.out.println(three);
//查找
boolean flag = list.contains(20);
System.out.println(flag);
flag = list.contains(three);
System.out.println(flag);
int idx = list.indexOf(three); //查找第一次出现的位置
System.out.println(idx);
idx = list.indexOf(20); //查找第一次出现的位置,如果找不到返回-1
System.out.println(idx);
//总的大小
int size = list.size();
System.out.println(size);
System.out.println("---------");
//遍历
for(int i =0;i
}
HashMap
1、原理
数组+链表
2、容器(工具)
两个类型,一个类型 Key 另一个类为value 键值对 : 一堆中快速定位一个
案例
import java.util.HashMap;
import java.util.Random;
public class HashMapTest01{
public static void main(String… args){
//存储书籍 数量
HashMap
//添加
map.put(“修炼手册”,30);
map.put(“修炼手册”,300); //存在,覆盖
map.put(“java编程思想”,80);
//获取
Integer num = map.get(“java编程思想”);
System.out.println(num);
int size = map.size();
System.out.println(size);
//删除
map.remove(“修炼手册”);
size = map.size();
System.out.println(size);
}
}
以上Day7学习内容及案例