5.3泛型数组列表
5.3.1 访问数组元素列表
基本类型和包装类是等价的
可以用int接受Integer的
java
import java.util.*;
public class text1 {
public static void main(String[] args)throws Exception {
String[] arr=new String[100];//长度定死
ArrayList<String> xx=new ArrayList<>();
//泛型数组<>中可以放除基本类型外的任意类型 支持for-each循环
//数组长度可扩展 动态可伸缩数组
xx.add("aaa");
//添加元素 aaa
xx.add("bbb");
xx.get(1);//获取下标为1的元素
xx.remove(1);//删除下标为1的元素 即 bbb 后面元素会自动往前移动
int num=xx.size();//获取数组长度
ArrayList<ArrayList<String>> ss1=new ArrayList<>();
//二维数组
}
//int--Integer long-Long float--Float double--Double
//boolean--Boolean char--Character
//byte--Byte short--Short
}
5.4对象包装器与自动装箱
面试点:128陷阱
基本类型对应的引用类型,如果数值一样,但是范围不在-128-127中。则不是一个对象
比如
java
int k1=100;
int k2=100;
Integer k3=100;
Integer k4=100;
System.out.println(k1==k2);
System.out.println(k3==k4);
java
true
true
java
int k1=128;
int k2=128;
Integer k3=128;
Integer k4=128;
System.out.println(k1==k2);
System.out.println(k3==k4);
java
true
false
因为Integer是引用类型表示指向是否相同
如果范围在-128-127之间指的是一个对象
超出就不是一个对象了
数值类的包装类都有这个问题
要想比较值大小的话可以分别用对应基本类型的变量接受一下 再比较基本类型的变量值是否相等
还可以用类型转换比较
例如
java
ArrayList<Integer> xx1=new ArrayList<>();
ArrayList<Integer> xx2=new ArrayList<>();
if(xx1.get(10).intValue()==xx2.get(10).intValue()==)
重要的泛型结构--hashmap
java
import java.util.*;
public class text1 {
public static void main(String[] args)throws Exception {
HashMap<String,Integer> map=new HashMap<>();
//<>中前边是key值类型 后边是value值类型
map.put("张三", 23);
//向hashmap中添加这个元素
map.put("老刘", 33);
map.put("小花", 43);
int x1=map.get("张三");
//获取map中key值为"张三"对应的value值 x1=23 x1类型也应该与value类型相同
//困难级别的算法题大多数都是动态规划--困难级别的动态规划大多都需要hashmap检测去重提升时间性能
//困难级别的算法题--大多数离不开hashmap
//遍历hashmap的方法 下面这个好用
for(String key:map.keySet())
{
System.out.println("key="+key+",Value="+map.get(key));
}
}
}