集合
集合:集合是Java中提供的一种容器,可以用来存储多个 数据
集合和数组有什么区别?
- 数组的长度是固定。集合的长度是可变的
- 数组中存储的是统一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象类型可以不一致。在开发中一般对象多的时候,使用集合进行存储
集合框架
Collection接口
/*
* Collection是所有单列集合的父接口,这些方法可用于操作所有的单列集合
* public boolean add(E e): 把给定的对象添加到当前集合中 。
* public void clear():清空集合中所有的元素。
* public boolean remove(E e): 把给定的对象在当前集合中删除。
* public boolean contains(E e): 判断当前集合中是否包含给定的对象。
* public boolean isEmpty(): 判断当前集合是否为空。
* public int size(): 返回集合中元素的个数。
* public Object[] toArray(): 把集合中的元素,存储到数组中。
* */
/*
* public boolean add(E e): 把给定的对象添加到当前集合中 。
* */
Collection<String> c = new ArrayList<String>();
c.add("张三");
c.add("赵四");
c.add("王五");
c.add("李白");
System.out.println(c);//[张三, 赵四, 王五, 李白]
/*
* public boolean remove(E e): 把给定的对象在当前集合中删除。
* 返回一个boolean值
* 删除元素存在 删除成功 返回true
* 删除元素不存在 删除失败 返回false
* */
boolean i = c.remove("李白");
System.out.println(i); //true
boolean j = c.remove("田七");
System.out.println(j); //alse
/*
* public boolean contains(E e): 判断当前集合中是否包含给定的对象。
* 包含返回true
* 不包含返回false
* */
boolean k = c.contains("张三");
System.out.println(k);//true
boolean l = c.contains("李白");
System.out.println(l);//false
/*
* public boolean isEmpty(): 判断当前集合是否为空。
* 空的返回true
* 不为空返回false
* */
boolean empty = c.isEmpty();
System.out.println(empty);//false
/*
* public int size(): 返回集合中元素的个数。
* */
int size = c.size();
System.out.println(size);
/*
* public Object[] toArray(): 把集合中的元素,存储到数组中。
* */
Object[] array = c.toArray();
for (int m = 0; m < array.length; m++) {
System.out.print(array[m]+" ");
}//张三 赵四 王五
/*
* public void clear():清空集合中所有的元素。
* */
c.clear();
System.out.println(c);
Iterator迭代器
Java.util.Iterator
Iterator迭代器,是一个接口,无法直接使用,需要使用Iterator接口的实现类对象。(获取Iterator实现类方法:Collection接口中有一个方法,叫iterator(),这个方法返回的就是迭代器的实现类对象)
/*
* 有两个常用的方法
* public E next():返回迭代的下一个元素。
* public boolean hasNext():如果仍有元素可以迭代,则返回 true。
* */
/*
* 迭代器的使用步骤
* 1,使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)
* 2,使用Iterator接口中的方法hasNext判断还有没有下一个元素
* 3,使用Iterator接口中的方法next取出集合中的下一个元素
* */
Collection<String> c = new ArrayList<String >();
c.add("张三");
c.add("赵四");
c.add("李白");
c.add("妲己");
c.add("虞姬");
//Iterator接口也是有泛型的,迭代器的泛型跟着集合走,集合是什么泛型,迭代器就是什么泛型
Iterator<String> it = c.iterator();
while(it.hasNext()){
String next = it.next();
System.out.println(next);
}
增强for循环
/*
* 增强for循环:底层使用的也是迭代器,使用for循环的格式,简化了迭代器的书写
* 用来遍历集合和数组
*
* 格式:
* for(集合/数组的数据类型 遍历名:集合/数组名){
* sout(变量名);
* }
* */
//遍历集合
ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
list.add("eee");
for (String string : list) {
System.out.println(string);
}
//遍历数组
int[] a = {1,2,3,6,5,5,2};
for (int i : a) {
System.out.println(i);
}