从上周开始我们学习了集合构架,下面我们开始回顾下:
一.首先先来回顾ArrayList类:父类是List接口,在往上父类Collection集合
public class Demo01 { public static void main(String[] args) { /** * list接口有序,可重复,有索引,可以用普通for循环 */ //新建arraylist类对象 ArrayList<String> obj = new ArrayList<>(); //添加数据 obj.add("ruirui"); obj.add("huahua"); obj.add("dandan"); obj.add("huahua"); obj.add("yeye"); obj.add("haohoa"); //打印输出 System.out.println(obj); //集合元素个个数 System.out.println(obj.size()); System.out.println("**************"); //移除指定索引为2的集合元素 obj.remove(2); System.out.println(obj); System.out.println("**************"); //增强性for循环的用法 for(String a:obj){ System.out.println(a); } System.out.println("**************"); //iterator迭代器的用法 Iterator<String> it = obj.iterator(); while(it.hasNext()){ String s = it.next(); System.out.println(s); } System.out.println("**************"); //因为list是有索引的,所以我们可以用普通for循环遍历集合元素 for(int i=0;i<obj.size();i++){ String s = obj.get(i); System.out.println(s); } System.out.println("**************"); //移除元素,但是如果有相同元素,它只会移除第一个 obj.remove("huahua"); System.out.println(obj); System.out.println("**************"); //集合中是否包含yeye这个元素 boolean ye = obj.contains("yeye"); System.out.println(ye); System.out.println("**************"); //集合是否为空 boolean em = obj.isEmpty(); System.out.println(em); System.out.println("**************"); //清空集合元素 obj.clear(); //最后检测集合中是否还有元素个数 System.out.println(obj.size()); } }
输出结果是:
[ruirui, huahua, dandan, huahua, yeye, haohoa] 6 ************** [ruirui, huahua, huahua, yeye, haohoa] ************** ruirui huahua huahua yeye haohoa ************** ruirui huahua huahua yeye haohoa ************** ruirui huahua huahua yeye haohoa ************** [ruirui, huahua, yeye, haohoa] ************** true ************** false ************** 0
通过回顾,我们对ArrayList类的概念和方法的掌握是不是更上一层楼呢?
总结:
1,List接口是Collection集合的子类,ArrayList类是List接口的子类
2,List接口是有序集合,允许重复的元素出现
3,有索引,可以通过普通for循环遍历,也可以通过增强型for循环,还可以通过迭代器
4,ArrayList类最大的特点需要我们注意:元素增删慢,查询快
二.LinkedList类
我们首先来看一段代码:
public class Demo02 { public static void main(String[] args) { //新建LinkedList类对象 LinkedList<String> obj = new LinkedList<>(); //添加数据元素 obj.add("ruirui"); obj.add("haohao"); obj.add("juahua"); //在第一个位置添加元素 obj.addFirst("xioye"); //在最后位置添加元素 obj.addLast("halou"); //返回第一个元素 String f = obj.getFirst(); System.out.println(f); //返回最后一个元素 String l = obj.getLast(); System.out.println(l); //移除元素 obj.remove("haohao"); System.out.println(obj); //打印输出元素个数 System.out.println(obj.size()); } }
输出结果是:
xioye
halou
[xioye, ruirui, juahua, halou]
4
总结:
1,List接口是Collection集合的子类,LinkedListt类是List接口的子类
2,List接口是有序集合,允许重复的元素出现
3,有索引,可以通过普通for循环遍历,也可以通过增强型for循环,还可以通过迭代器
4,LinkedList类最大的特点需要我们注意:增删快
5,LinkedList除了包含ArrayList的方法之外,还提供了add,get,remove,set。首部(Fist)和尾部(Late)方法
三.Set集合
下面我们先看干货:
public class Demo03 { public static void main(String[] args) { //新建HashSet类对象 HashSet<String> obj = new HashSet<>(); obj.add("ruirui"); obj.add("huahua"); obj.add("haohao"); int size = obj.size(); System.out.println(obj); obj.remove("ruirui"); System.out.println(obj); boolean empty = obj.isEmpty(); System.out.println(empty); boolean huahua = obj.contains("huahua"); System.out.println(huahua); obj.clear(); System.out.println(obj.size()); } }
输出结果:
[haohao, huahua, ruirui] [haohao, huahua] false true 0
总结:
1,set接口继承于Collection,它的子类是HashSet,HashSet的子类是LinkedHashSet
2,set接口的特点是无序,不允许重复元素存在,没有索引,只能通过iterator迭代器和增强型for循环遍历
3,但是LinkedHashSet是有序的
4,HashSet类底层是一个哈希表,所以查询快,是Set接口的实现类