一:集合概念
对象的容器,定义了对多个对象的进行操作的常用方法,可实现类似于数组的功能。
二:集合和数组的区别
一:集合中存储的实际上是对象的地址,clear()方法是将集合中对象的地址删除,对象本身是不会被删除的。
二:API中对于remove()方法的介绍如下:
从该集合中删除指定元素的单个实例(如果存在)(可选操作)。 更正式地,删除元素e
,使得**(o==null ? e==null : o.equals(e))**
。
注意,不同类的equals方法是不同的,基类Object中定义的equals方法是比较两个对象的地址值是否相等,根据不同类的不同功能,我们可以选择重写equals方法。在使用集合的remove()方法时,需要注意集合所包含对象的equals方法的含义。
代码示例:
/* * Collection接口的使用说明 * (1) 添加元素 * (2) 删除元素 * (3) 遍历元素 * (4) 判断 */ public class Demo1 { public static void main(String[] args) { Collection<Integer> collection = new ArrayList<Integer>(); // 添加元素 collection.add(1); collection.add(1); collection.add(2); collection.add(3); // System.out.println会自动调用对象的toString()方法,前提是方法存在 System.out.println(collection); // 移除元素 collection.remove(1); System.out.println(collection); // 包含元素 System.out.println(collection.contains(1)); // 遍历元素 // 1. foreach方法 for(Integer num : collection){ System.out.println(num); } System.out.println("==================="); // 2.迭代器 Iterator<Integer> iterator = collection.iterator(); while(iterator.hasNext()){ // next()方法会返回当前元素,并将迭代器指向移动到下一个位置 Integer num = iterator.next(); // remove()方法跟在next()方法后面使用,删除集合中next返回的元素 iterator.remove(); System.out.println(num); } System.out.println(collection.isEmpty()); } }
一:特定:有序,有下标,元素可重复
ArrayList类是Java集合框架中使用率很高的的一个类,它实现了List接口,底层是采用数组来保存元素,我们可以把它看作是一个可以自动增大容量的数组。
在ArrayList中有一个数组和计数器,当我们向ArrayList中添加一个元素时,这个元素会放在计算器所指定的数组索引位置上。当ArrayList对象的数组无法保存更多的元素时,它会创建一个比当前数组大一些的新数组,然后把当前数组的内容复制到新数组中。
在程序编写的过程中,我们最好根据需要保存元素的多少为ArrayList估算一个容量值,这样可以有效地避免操作过程中频繁地发生数组复制。
对于数据的访问一般包括四个操作:增,删,改,查。ArrayList对于这四个操作都给出了相应的方法。
public boolean add(E e)
public void add(int index, E element)
public boolean addAll(Collection<? extends E> c)
public boolean addAll(int index, Collection<? extends E> c)
其中,add方法用于添加单个元素,addAll方法用于添加一组元素。不带索引的add和addAll方法将元素添加于末尾,而带index的方法将元素在指定的index处插入列表。
例如:
ArrayList<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.addAll(0, Arrays.asList(1,3,1,4)); System.out.println(list);
输出结果:
[1, 3, 1, 4, 1, 2]
public E remove(int index) // 删除指定索引处的元素
// 从列表中删除指定元素的第一个匹配项(如果存在)。如果列表中不包含改元素,则列表保持不变 public boolean remove(Object o)
// Java8在Collection接口中新增的默认方法,ArrayList重写了该方法,从列表中删除满足filter的元素 public boolean removeIf(Predicate<? super E> filter)
// 从列表中删除指定集合中包含的所有元素,它和remove方法不一样,比如说c中有一个元素为a,那么 // removeAll方法会将列表中所有的元素a都删掉 public boolean removeAll(Collection<?> c)
实例:
ArrayList<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.addAll(0, Arrays.asList(1,3,1,4)); // System.out.println(list); list.remove(0); list.removeAll(Arrays.asList(3,1)); // lambda表达式 list.removeIf(x -> x % 2 == 0); System.out.println(list);
输出为一个空列表
public E set(int index, E element)
用给定元素element代替原列表中指定索引位置的元素
public E get(int index) // 返回指定索引位置的元素
// 返回列表中元素o第一次出现的索引位置,如果列表中不包含该元素,则返回-1 public int indexOf(Object o)
// 返回列表中元素o最后一次出现的索引位置,如果列表中不包含该元素,则返回-1 public int lastIndexOf(Object o)
// 返回列表中fromIndex(包括)和toIndex(不包括)之间的元素 public List<E> subList(int fromIndex, int toIndex)