HashMap:无序,存储个数不固定,可以动态添加数据,以键值对的形式存储数据,其中键是不能重复的,值是可以重复的。
1、声明:
HashMap<引用数据类型,引用数据类型 > map;
2、定义 :
HashMap map1 = new HashMap(); // 推荐
HashMap map2 = new HashMap<>(); // 推荐 jdk8开始支持第一种写法
HashMap map3 = new HashMap();
3、常用的方法:
put() 往集合添加数据(键值对)
size() 键值对的个数
get(key) 返回指定键所映射的值 根据键,去相对应的值
isEmpty() 判断集合是否有键值对 没有的话就是 true 否则就是 false
containsKey(key) 判断是否包含 指定的键
containsValue(value) 判断是否包含 指定的值
clear() 清空集合中所有的键值对
remover(key) 删除某个键值
4 、HashMap的遍历:
Map map = new HashMap();
map.put("k1", "v1");
map.put("k2", "v2");
map.put("k3", "v3");
//将map.keySet()得到的键赋给str,再通过map.get(str)得到值
for(String str:map.keySet()){
System.out.println(map.get(str));
}
ArrayList : 有序的集合 并且有下标 和数组一样下标从0开始,有顺序的
1.声明:
ArrayList names;
2.定义:
ArrayList names = new ArrayList();
ArrayList list1 = new ArrayList();
ArrayList list = new ArrayList<>(); // 推荐
ArrayList list2 = new ArrayList();// 推荐
ArrayList list3 = new ArrayList<>();
ArrayList list4 = new ArrayList();
3、 常用的方法:
add() 添加元素
get() 根据索引获取对应的值 索引是从 0 开始的
remove(); 根据索引删除指定的值 删除之后,后面的元素会上位
isEmpty() 判断是否为空
indexOf() 根据指定的对象返回该对象在集合中首次出现的索引,如果没有就返回 -1;
lastIndexOf() 根据指定的对象返回 该对象在集合中最后一个位置上的索引 如果没有就返回 -1
set(int index, E element) 用指定的元素替代此列表中指定位置上的元素。
size() 获取集合的长度
toArray() 把集合转化成数组
例:Object[] objArr = list.toArray(); // 集合转化成数组
Arrays.toString 把数组转化成字符串
例:String str = Arrays.toString(objArr); // 数组转化成字符串
Arrays.asList(); //将数组转换为集合list
如果数组是引用数据类型,那么就会把数组中的每个元素,存储到集合中去,转化成集合后,那么这个集合 不可以进行添加删除操作,但可以进行修改操作
Integer[]
arr = {1,2,3,4,5};
List asList = Arrays.asList(arr);
如果是基本数据类型的数组 ,那么就会把整个数组当成一个对象 存储到集合中去
int
[]
arr
= {1,2,3,4};
List<
int
[]>
asList
= Arrays.asList(
arr
);
System.
out
.println(
asList
); //打印出来的所存储的地址
System.
out
.println(
asList
.size()); //==1 大小为1,因为当成了一个对象
常常使用Arrays.asLisvt()后调用add,remove这些method时出现java.lang.UnsupportedOperationException异常。这是由于:
Arrays.asLisvt() 返回java.util.Arrays$ArrayList, 而不是ArrayList。Arrays$ArrayList和ArrayList都是继承AbstractList,remove,add等 method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。ArrayList override这些method来对list进行操作,但是Arrays$ArrayList没有override remove(int),add(int)等,所以throw UnsupportedOperationException。
解决方法是使用Iterator,或者转换为ArrayList
List list = Arrays.asList(a[]);
List arrayList = new ArrayList(list);
List