1,概述
集合和数组一样,都是用来存储 多个 数据的.
数组的缺点: 多个相同类型的数据 + 一旦创建长度不可变 + 按照下标遍历 + 适合查询
集合的优点: 可以存类型不同的数据 + 可变长度 + 遍历方式丰富 + 适合查询 + 适合增删
2,继承结构
--Collection接口
--List子接口
--ArrayList实现类(底层是数组,适合查询)
--LinkedList实现类(底层是链表,适合增删)
--Set子接口
--HashSet实现类
--Map接口
--HashMap实现类
3,常用方法
boolean add(E e): 添加元素。
boolean addAll(Collection c): 把小集合添加到大集合中 。
boolean contains(Object o) : 如果此 collection 包含指定的元素,则返回 true。
boolean isEmpty() : 如果此 collection 没有元素,则返回 true。
Iterator<E> iterator(): 返回在此 collection 的元素上进行迭代的迭代器。
boolean remove(Object o) : 从此 collection 中移除指定元素的单个实例。
int size() : 返回此 collection 中的元素数。
Objec[] toArray(): 返回对象数组
4,测试
// 测试Collection
public class Test_Collection {
public static void main(String[] args) {
// 1.创建对象
Collection<Integer> c = new ArrayList<>();
// 2.调用方法
c.add(2); // 添加元素
c.add(1);
c.add(3);
System.out.println(c);
// c.clear(); 清空集合
// System.out.println(c);
//如果此collection包含指定的元素,则返回true
System.out.println(c.contains(1));
Collection<Integer> c2 = new ArrayList<>();
c2.add(11);
// 判断集合与集合是否相等
System.out.println(c.equals(c2));
// 集合在内存中的hashcode值
System.out.println(c.hashCode());
// 从此collection中移除指定元素的单个实例
System.out.println(c.remove(3));
// 集合是否为空
System.out.println(c.isEmpty());
// 集合的元素数
System.out.println(c.size());
// 返回对象数组
System.out.println(Arrays.toString(c.toArray()));
//TODO 集合间的操作
System.out.println(c.addAll(c2)); // 把c2加到c里
System.out.println(c.containsAll(c2));// 判断c里包含c2
// System.out.println(c.removeAll(c2)); // 移除交集
// System.out.println(c.retainAll(c2)); //保留交集
System.out.println(c);
// 迭代集合提供的唯一方法 (iterator迭代器迭代)
Iterator<Integer> iterator = c.iterator();
while (iterator.hasNext()) {//hasNext()判断有元素吗?有的话就返回true
Integer in = iterator.next();//next() 获取元素 + 把指针往后移一位
System.out.println(in);
}
// 另一种高效方法
for (Integer in : c) {
System.out.println(in);
}
}
}
Collections工具类
1.概述
--- 专门用来给 Collection集合 提供各种方法
2.常用方法
--- addAll(Collection<? super T> c, T... elements)
--- max(Collection<? extends T> coll)
--- min(Collection<? extends T> coll)
--- static void reverse(List<?> list)
--- sort(List<T> list)
--- swap(List<?> list, int i, int j)
3.测试代码
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
System.out.println(Collections.addAll(list, 10, 20, 30));
System.out.println(list);
System.out.println(Collections.max(list));
System.out.println(Collections.min(list));
Collections.reverse(list);
System.out.println(list);
Collections.sort(list);
System.out.println(list);
Collections.swap(list, 0, 2);
System.out.println(list);
}