集合:集合是含有多个元素构成的一个整体。可以将集合看做事一个容器,能够存放元素,并且在需要时能够获取元素。
集合与数组:
1.数组的数据结构比集合简单,因此,数组的性能好于集合
2.数组是定长的,数组对象一经创建,其长度就不能进行修改。可以根据需要底层实现自动扩容
3.数组提供的功能相对单一,集合提供了很多有用的的方法,可以用来操作集合中的元素
Collection 接口是集合框架中两大根接口之一,提供(表示)的是一种通用的设计
Java没有为collection 接口提供有效的实现类。我们可以使用collection子接口的实现类
public class CollectionMethod{
Public static void main(Sting[] args){
Collection<Integer> c = new ArrayList<>();
ArrayList<Integer> c = new ArrayList<>();
//向集合中加入元素,如果元素加入成功,返回ture, 否则返回false
c.add (5);
c.add();
//返回集合中元素的个数
System.out.println(c.size());
//判断集合是否为空(元素是否为0),空则返回true,否则返回false
System.out.println( c.isEmpty() );
//判断集合中是否包含参数指定的元素(equals方法),包含返回true,否则返回false
System.out.println( c.contains(5) );
//返回集合的迭代器,可以用来遍历集合中的每一个元素
Iterator<Integer> i = c.iterator();
//将集合转换成数组,数组的长度就是集合中元素的个数
Object[] o = new c.toArray();
System.out.println(o.length);
//将集合转换成数组,但是可以保留集合中元素的类型
Integer[] array = new Integer[c.size];
array = c.toArray(array);
System.out.prinltn(Arrays.toString(array));
//删除集合中参数指定的元素,如果删除成功,返回true,否则返回false
c.remove(3);
Collection<Integer> c2 = new ArrayList<>();
c2.add(4);
c2.add(5);
//判断当前集合是否包含参数集合中的所有元素,全部包含返回true,否则返回false
System.out.println( c.containAll(c2) );
//使用当前集合加入参数集合中所有的元素(在c集合中加入c2集合的所有元素),如果当前集合发生改变,返回true,否则返回false
c.addAll(c2);
//从当前集合删除参数集合中的所有元素,如果当前集合发生改变,返回true,否则返回false
c.removeAll( c2 );
//删除符合条件的所有元
c.removeIf(t -> t>2);
//保留当前集合存在,并且参数集合存在的所有元素,删除掉当前集合存在,并且参数集合不存在的所有元素,(保留两个集合中的交集元素)如果当前集合发生改变,返回(true),否则返回false
System.out.println( c.retainAll(c2) );
//删除当前集合中所有的元素
c.clear();
}
}
思考:为什么要通过接口来引用对象,而不是直接声明实现类的引用呢:
答: 如果通过实现类的方式去创建实现累的对象的话,在用中没有什么影响
但是这样做会在以后修改带来不方便,因为一个接口可能有很多实现类,而实现类都有各自的优缺点,如果以后想对实现改变的话,只需要该右边的实现类
集合的遍历:
public class Traverse {
public static void main(String[] args){
Collection<Integer> c = new ArrayList<>();
for(int i = 0;i <5;i+=){
c.add(i);
}
// 1使用Iterator的方法(原始方法)
Interator<Integer> inter = c.iterator();
//判断是否含有下一个元素,存在返回true,否则返回false
While(inter.hasNext()){
//返回下一个元素,同时向前移动指针
Integer in = inter.next();
System.out.println(in);
//删除最后一次通过调用next返回的元素
Inter . remove();
在使用迭代器访问集合元素时,不能通过集合对象本身来删除元素,否则就会在运行时产生ConcurrentModificationException异常。
如果需要在迭代器访问集合元素时删除元素,需要通过迭代器的remove方法进行安全的删除元素
}
“`