一、集合框架的概述
1、集合和数组都是对多个数据进行存储的操作,简称JAVA容器。此时的存储主要指的是内存层面,不涉及到持久化的存储。
2.1、数组存储的特点
(1)数组一旦初始化后,数组的长度就确定了。
(2)数组一旦定义好,其元素类型也就确定了,我们只能操作指定类型的数据了。比如String[] arr, int[] arr
2.2、数组在存储多个数据方面的缺点
(1)数组一旦初始化以后,其长度就不能再改变
(2)数组中提供的方法十分有限,比如删除、增加、插入数据等操作非常不方便而且效率不高
(3)获取数组中实际元素个数的需求,数组里面没有现成的方法使用
(4)数组存储数据的特点:有序且可以重复;对于无序不可以重复的数据处理不了
Java集合可分为Collection和Map两种体系,其中Collection接口里面定义了存取一组对象的方法的集合且里面存的都是单列数据。如List里面存的元素都是有序的可以重复;Set里面存取的都是无序的不可以重复的元素。Map接口存储是双列数据,保存具有映射关系的“key-value对”的集合,允许多个Key对于同一个value,不允许同一个key对应于多个value。
* Collection接口:单列集合,用来存储一个个对象 * List接口:存放的是有序的可以重复的元素----》动态数组 * ArrayList LinkedList vector * Set接口:存放的是无序的不能重复的元素----》高中时候讲得集合 * HashSet LinkedHashSet TreeSet * Map接口:双列集合,用来存储一对key-value的数据。------------》类似于函数 * HashMap HashTable LinkedHashMap TreeMap
import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
public class CollectionTest01 {
@Test
public void test01(){
Collection coll = new ArrayList();
coll.add("123");
coll.add("456");
coll.add(false);
coll.add(new Person(12,"wewr"));
//向Collection接口的实现类的对象中添加数据obj时,要求obj所在的类要重写equals()
System.out.println(coll.contains(new Person(12,"wewr")));
//removeAll()
Collection coll1 = Arrays.asList("123");
coll.removeAll(coll1); //求两个集合的差集
System.out.println(coll);
//retainAll()
Collection coll2 = Arrays.asList("123","456");
coll.retainAll(coll2); //求两个集合的交集
System.out.println(coll);
// equals() 必须两个集合里面元素的值相同,才会返回true
Collection coll3 = new ArrayList();
coll3.add("456");
// coll3.add(false);
// coll3.add(new Person(12,"wewr"));
System.out.println(coll.equals(coll3));
//返回当前对象的hash值
System.out.println(coll.hashCode());
//coll.toArray() 将集合转换为数组
Object[] arr = coll.toArray();
for(int i = 0;i < arr.length;i++){
System.out.println(arr[i]);
}
//将数组变为集合
List<String> strings = Arrays.asList(new String[]{"qwe", "www"});
System.out.println(strings.size());//2
List<int[]> ints = Arrays.asList(new int[]{12, 23});
System.out.println(ints.size()); // 1
List ints1 = Arrays.asList(new Integer[]{12, 23});
System.out.println(ints1.size()); // 2
}
}