一.集合:
看做一种容器,用来存储对象信息,所有的集合都位于java.util包下
二.数组和集合的区别:
* ①.数组存储的相同的数据类型,集合可以存储不同的数据类型
* ②.数组可以存储基本类型的数据,也可以存储对象,集合只能存储对象
* ③.数组长度是不可变化的,一旦确定了数组的长度,数组中只能存储固定个数的元素
* 集合可以存储数量不确定的数据。
三.集合包含的主要接口:Java集合中有两个跟接口Collection和Map派生出来的。
1.Collection接口
* ①.List接口:存储有序的,可以重复的元素。(底层实现是使用数组)
* -- ArrayList:主要实现类
* -- LinkedList:链表的实现方式,主要对于频繁的插入,删除操作。
* -- Vector:古老的实现类
* ②.Set接口:存储无序的,不可重复的元素。(添加相同的元素只能存储一份)
* -- HashSet:主要的实现类
* -- LinkedHashSet:它是HashSet的一个字类,具有HashSet的特性,是根据元素的hashcode值来决定
* 元素存储的位置,它也使用链表来维护元素的顺序。(性能是低于HashSet)
* -- TreeSet:它是SortedSet接口的实现类,可以保证元素处于排序状态。(默认是采用自然排序)
* 自然排序:TreeSet会调用集合元素的compareTo(object)方法比较元素的大小关系,然后将元素按照升序排序
* ③.Queue(队列)
2.Map接口:存储的数据是键值对<key,value>
* ①.key:是不能重复的,使用Set来存储。
* ②.value:是可以重复的,使用Collection来存储。
* ③.实现类:
* -- HashMap:主要的实现类
* -- LinkedHashMap
* -- TreeMap
* -- Hashtable:子类(Properties:键值对都是String类型)
package com.hpe.collection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import org.junit.Test;
public class TestCollection1 {
@Test
public void testCollection1() {
Collection coll = new ArrayList();
// 1.size()返回集合中元素的个数
System.out.println(coll.size());
// 2.add(object obj)添加元素
coll.add(123);
coll.add("tina");
coll.add(new Date());
coll.add("A");
coll.add("A");
System.out.println(coll.size());
System.out.println(coll);
// 3.addAll(Collection coll)将集合中的所有元素添加到当前集合
// Arrays:操作数组的一个工具
// asList(T... a);
Collection coll1 = Arrays.asList(1,2,3,4,5);
coll.add(coll1);
System.out.println(coll);
// 4.isEmpty() 判断该集合是否为空
System.out.println(coll.isEmpty());
// 5.clear() 情况集合元素
coll.clear();
System.out.println(coll.isEmpty());
}
@Test
public void testCollection2() {
Collection coll = new ArrayList();
coll.add(123);
coll.add("tina");
coll.add(new Date());
coll.add("A");
coll.add(new Person("eric",20));
System.out.println(coll);
// 6.contains(object obj):判断集合中是否可以包含指定的元素
boolean b1 = coll.contains(123);
System.out.println(b1);
// 如果存入集合的元素是自定义对象,需要重写hashcode和equals方法
boolean b2 = coll.contains(new Person("eric",20));
System.out.println(b2);
// 7.remove(Object obj) 删除集合中的元素
boolean b3 = coll.remove("A");
System.out.println(b3);
System.out.println(coll);
// 8.removeAll(Collection coll):从当前集合中删除另外一个集合
Collection coll1 = new ArrayList();
coll1.add(123);
coll1.add("A");
// coll.removeAll(coll1);
System.out.println(coll);
// 9.toArray()将集合转换成数组
Object[] array = coll.toArray();
for (Object obj : array) {
System.out.println(obj);
}
System.out.println("------------------------");
// 10. iterator() 迭代器 可以实现对集合的遍历
// 迭代器是一种设计模式,它是一个轻量级对象
// Iterator是一个接口,是集合的迭代器,集合可以通过Iterator去遍历集合中的元素
// hasNext():判断集合中是否存在下一个元素,如果有则返回true
// next():返回集合里的下一个元素
Iterator iterator = coll.iterator();
while (iterator.hasNext()) {
Object obj = iterator.next();
System.out.println(obj);
}
}
}
遍历集合:
* 1.使用迭代器Iterator实现
* 2.使用增强for循环
* 3.使用for循环
* 4.将集合转化为数组(toArray),再进行遍历
package com.hpe.collection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class TestCollection2 {
public static void main(String[] args) {
Collection coll = new ArrayList();
coll.add("张三");
coll.add("abc");
coll.add("A");
coll.add(30);
// 1.使用迭代器
Iterator iterator = coll.iterator();
// 判断还有没有下一个元素
while (iterator.hasNext()) {
// 获取下一个元素
Object obj = iterator.next();
System.out.println(obj);
}
System.out.println("-----------------");
// 2.使用增强for循环
for (Object obj : coll) {
System.out.println(obj);
}
System.out.println("------------------");
// 3.使用for循环
Iterator iterator2 = coll.iterator();
for(;iterator2.hasNext();) {
Object obj = iterator2.next();
System.out.println(obj);
}
System.out.println("-----------------------");
// 4.将集合转化成数组,再进行遍历
Object[] array = coll.toArray();
for (Object object : array) {
System.out.println(object);
}
}
}