目录
一、集合的概念
集合就是存放对象的容器,实现了对多个对象的操作的常用方法,比如添加删除修改对象。集合类似于数组,但集合不是数组。
二、集合与数组的区别
- 集合长度不固定,可以随着数据的增加实现扩容操作;数组长度固定,数据一旦创建并指定大小之后,长度就不能修改了;
- 集合只能存储引用类型(对基本类型的数据实现装箱操作以后就可以存入集合);数组可以存储基本类型和引用类型;
- Java中的集合全部位于Java.util.*包下;
三、Collection接口
Collection接口是List、Set集合的根接口,Collection接口下有List、Set两个实现子接口;
1、List接口
特点:数据有序存储、有下标、元素可以重复存储;
实现类:
- ArrayList
- LinkedList
- Vector
2、Set接口
特点:数据存储无序、无下标、元素不可以重复;
实现类:
- HashSet
- TreeSet(实现自SortedSet接口,是在Set接口下的子接口)
3、图形简介
四、Collection集合的几种方法
4.1、Collection集合的创建方式
实例化对象:实例化对象是指创建一个对象,并对创建出来的对象进行赋值等操作,即为对象创建出存储数据的地址空间;
创建对象:指的是单纯的创建一个对象,这个对象只有自己的空间,即存储对象名的空间,没有分配存储数据的空间;
collection接口不能实例化对象,但可以创建一个对象;所谓的不能实例化对象是指接口只能创建一个没有被分配存储数据的空间的对象,
而分配存储数据的空间、变更数据的操作等需要通过实现类的特定方法来实现;所以集合在创建时不能执行赋初值操作,只能通过特定方法
实现;但数组可以直接实例化对象,对该对象赋初值。
创建集合的方式:
/**
* 初始容量设置为20
*/
Collection collection = new ArrayList(20);
/**
* 不设置初始容量的大小
*/
Collection collection = new ArrayList();
/**
*也可以直接使用List、Set接口创建集合对象
*/
List list = new ArrayList();
List list1 = new LinkedList();
List list2 = new Vector();
Set set = new HashSet();
Set set1 = new TreeSet();
4.2、Collection集合中数据的增删改查等操作
暂略;
4.3、Collection集合的两种遍历方式
第一种:增强for循环(不能使用简单的for循环来遍历集合)
使用forEach循环遍历集合:
for(Object obj :collection) {
System.out.println(obj);
}
第二种:迭代器iterator()循环:
迭代器所特有的三个方法:
hasNext():判断集合中下一个元素是否存在,返回值为Boolean类型;如果存在下一个元素返回true;
next():用来获取下一个元素的值;当hasNext()返回值为true时,就调用next()方法获取下一个元素的值;
remove():删除当前元素;用来移除next()方法返回的元素;
注意:while循环体中的remove方法是iterator特有的方法,如果使用collection.remove()方法,将会提示代码错误;原因如下:
使用增强for循环的缺点:
不能在集合内部实现对元素的增加add和删除remove方法;使用obj.remove()方法会抛出并发修改的异常;
不能 获取元素的下标;
Iterator iterator = collection.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
//iterator.remove();
}
两种方法的联系:
首先增强for循环和使用iterator遍历的效果是一样的,也就是说增强for循环内部就是调用iterator方法实现的;
关于何时使用何种方式的技巧:
- ArrayList由于使用数组实现,因此下标明确,最好使用普通循环。
- 对于LinkedList 由于获取一个元素,要从头开始向后找,因此建议使用增强for循环,也就是iterator。
4.4、Collection集合的判断操作
关于集合的判断操作,主要有两种,其一是判断集合中是否存在某个值,其二是判断集合是否为空;用法比较单一,一笔带过:
Collection collection = new ArrayList();
collection.add("苹果1");
collection.add("苹1果");
collection.add("1苹果");
System.out.println(collection.contains("苹1果"));
//输出结果为true
System.out.println(collection.isEmpty());
//输出结果为false
五、Map集合的遍历(特殊遍历方式)
map集合以键值对的方式存在,可以通过key进行value的获取,但是Map的遍历是不能通过简单的for循环实现的。
Map集合遍历方式有多种,此处只记录最常用的两种方式:
1、通过map.KeySet()获取到key,根据键获取值:
for(String s : map.KeySet()){
System.out.println("key:"+s+" value:"+map.get(s));
}
2、通过Map.Entry(String,String) 获取,然后使用entry.getKey()获取到键,
通过entry.getValue()获取到值:
for(Map.Entry<String, String> entry : map.entrySet()){
System.out.println("键 key :"+entry.getKey()+" 值value :"+entry.getValue());
}
通过键获取值的方法是:map.get(key);
map.KeySet()这个方法会将key全部获取到,并转成String类型的一个变量,随后在循环体内进行其他操作;
遍历map的特殊之处就在于for循环的条件设置,和普通的foreach循环类似,但不是将整个map转为某一类型,而是只转key,后期再通过key去获取值;
觉得有帮助可以点点订阅,一键三连,后续会不断更新的......