集合(动态数组)
(一)ArrayList集合
创建语法:ArrayList< E > list = new ArrayList< E >( );
//E为泛型的写法,用于指定集合中存储什么数据类型(必须是引用数据类型)
//若要使用泛型,jdk版本必须在1.5及1.5以上
自动获取返回类型快捷键(在方法尾部同时按):shift+alt+L
ArrayList集合的特点:
- 是一种动态数组,声明时不需要指定集合大小,当空间不够时,可以自动变大
- 从集合中取数据时,要通过下标来取
- 集合中,允许出现重复元素
- 存储数据时,采用的是队列这种数据结构(先存储的数据最先被取出来)
- 存放在此集合中的数据是有顺序的
*常用的数据结构:
1.队列:存放的数据,先进先出,后进后出
(火车进山洞:火车头先进山洞火车头也是先出山洞的)
2.栈:存放的数据,先进后出,后进先出
(子弹上膛:最先装的子弹是最后打出来的)
1. 向集合中添加数据---------add()
list.add(“jack”); //将数据添加到集合尾部
list.add(1,“jack”); //将数据添加到集合中下标为1的位置
2. 根据下标从集合中得到一个元素---------get()
String val = list.get(0);//得到集合中下标为0的元素
String val = list.get(3);
//如果集合中没有下标为3的元素,强制取值,会报出如下错误:
3. 获取集合中存储的元素个数---------size()
int count = list.size();
4. 循环遍历
//循环遍历的方法与数组的方法相同
方式一:
for(int i=0;i<list.size();i++){
int val = list.get(i);
}
方式二:
for(int val:list){
}
5. 删除集合中的元素--------remove()
在数组中,删除元素要考虑后面的元素会向前挪动的问题
而使用ArrayList集合,删除元素后,后面的元素会自动向前挪动
方式一:
list.remove(下标); //根据下标删除元素
方式二:
list.remove(元素); //直接删除指定元素
假如元素也为数字时,优先当做下标删除处理
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.remove(1); //1为元素
System.out.println(list);
*运行结果:[1,3]
6. 判断集合为空--------isEmpty()
boolean flag = list.isEmpty();
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
if (list.isEmpty()) {
System.out.println("没有数据");
}else {
System.out.println("有数据,个数为"+list.size()+"个");
}
*运行结果:有数据,个数为3个
7. 判断集合中是否存在某一个元素--------contains()
boolean flag = list.contains(元素);
ArrayList<String> list = new ArrayList<String>();
list.add("q");
list.add("w");
list.add("a");
if (list.contains("A")) {
System.out.println("存在");
}else {
System.out.println("不存在");
}
*运行结果:不存在
8. 移除集合中所有元素--------clear()
list.clear();
ArrayList<String> list = new ArrayList<String>();
list.add("q");
list.add("w");
list.add("a");
list.clear();
System.out.println(list);
*运行结果:[]
(二)HashSet集合
特点:
- 是一种动态数组,声明时不需要指定集合大小,空间不够时可以自动变大
- 通过下标遍历元素
- 集合中不允许出现重复元素(如果元素存在,不会添加)
- 存放在此集合中的数据是无序的
ArrayList集合与HashSet集合的区别:
1. ArrayList集合中允许有重复元素,后者不允许
2. ArrayList集合是有序排列,后者是无序排列
(三)HashMap集合
创建语法:HashMap<K,V> map = new HashMap<K,V>
//此集合不能直接循环遍历,它不能通过下标访问,它要通过键来取值
HashMap集合的特点
- 存储数据时,要同时设置键(K)和值(V),一个键对应一个值
- 取数据时,要通过键取到对应的值
- 集合中的键不允许出现重复值
(如果键重复,后一次的值会将前一次的值覆盖)- 存放的数据没有顺序
常用方法:
1.向集合中存储数据--------put()
map.put( K , V );
2.取集合中的值--------get()
String val = map.get(K);
3.得到集合的长度(存储的键对应值的个数)--------size()
int len = map.size();
4.删除集合中的数据--------remove()
map.remove(K);
5.清空集合中的数据--------clear()
map.clear();
6.判断集合中是否包含某个键--------containsKey()
boolean flag = map.containsKey(K);
7.判断集合中是否包含某个值--------containsValue()
boolean flag = map.containsValue(V);
8.获取集合中所有的键--------keySet()
Set< E > vals = map.keySet();
9.获取集合中所有的值--------values()
Couection< E > vals = map.values();