集合:
1. 集合、数组都是对多个数据进行存储操作的结构,简称Java容器。
说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt , .jpg , .avi , 数据库中)。
2.1 数组在存储多个数据方面的特点:(同C语言)
> 一旦初始化以后,其长度就确定了。
> 数组一旦定义好,其元素的类型也就确定了。我们也就只能操作指定类型的数据了。
2.2 数组在存储多个数据方面的缺点:
> 一旦初始化以后,其长度就不可修改。
> 数组中提供的方法非常有限,对于添加、删除、插入数据等操作,非常不便,同时效率低。
> 获取数组中实际的个数的需求,数组没有现有的属性或方法可用
> 数组存储数据的特点:有序、可重复、对于无序、不可重复的需求,不能满足。
Java集合可分为 Collection 和 Map 两种体系:(根据数据的特点来应用)
Collection接口:单列数据,定义了存取一组对象的方法的集合
List:元素有序、可重复的集合 ----->“动态”数组
ArrayList、LinkedList、Vector
Set:元素无序、不可重复的集合 ----->高中讲的“集合”
HashSet、LinkedHashSet、TreeSet
Map接口:双列数据,保存具有映射关系 “key-value对” 的集合 ----->高中函数: y = f( x )
HashMap、LinkedHashMap、TreeMap、Hashtable、Properties
Collection接口中的方法的使用:
(以ArrayList为例)
import java.util.ArrayList; import java.util.Collection; import java.util.Date; public class Test1 { public static void main(String[] args) { Collection coll = new ArrayList(); //add(Object e);将元素e添加到集合coll中 coll.add("AA"); coll.add("BB"); coll.add(123);//自动装箱 coll.add(new Date()); //size();获取添加的元素的个数 System.out.println(coll.size()); //addAll(Collection coll1);将coll1集合中的元素添加到当前的集合中 Collection coll1 = new ArrayList(); coll1.add(456); coll1.add("CC"); coll.addAll(coll1); System.out.println(coll.size()); System.out.println(coll); //clear();清空集合元素 coll.clear(); //isEmpty();判断当前集合是否为空 System.out.println(coll.isEmpty()); } }
结果:
![]()
1.contains(Object obj):(判断当前集合中是否包含obj)
2.containsAll(Collection coll1):判断形参中的所有元素是否都在当前集合中
3.remove(Object obj)//从当前集合中删除obj元素
4.removeAll(Collection coll1);差集;从当前集合中移除coll1中的所以元素
5.coll.retainAll(coll1);交集;获取当前集合和coll1集合的交集,并返回给当前集合
6.coll.equals(coll2);要想返回true,需要当前集合和形参集合的元素都相同。
7.hashCode();返回当前对象的哈希值
8集合转换为数组: toArray();------数组到集合:调用Arrays类的静态方法asList();
9.iterator();返回Iterator接口的实例,用于遍历集合元素。
import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; public class CollectionTest { public static void main(String[] args) { Collection coll = new ArrayList(); coll.add(123); coll.add(456); coll.add(new String("Tom")); coll.add(false); coll.add(new Person("Jerry", 20)); Person p = new Person("Jerry",20); coll.add(p); //1.contains(Object obj);判断当前集合中是否包含obj boolean contains = coll.contains(123); System.out.println(contains); System.out.println(coll.contains(new String("Tom"))); //我们在判断时会调用obj对象所在类的equals(). System.out.println(coll.contains(new Person("Jerry",20)));//需要重写equals() System.out.println(coll.contains(p)); System.out.print("\n"); //2.containsAll(Collection coll1);判断形参中的所有元素是否都在当前集合中 Collection coll1 = Arrays.asList(123,456); System.out.println(coll.containsAll(coll1)); System.out.print("\n"); //3.remove(Object obj)//从当前集合中删除obj元素 coll.remove(123); System.out.println(coll); coll.remove(p); System.out.println(coll); coll.remove(new Person("Jerry",20)); System.out.println(coll); System.out.print("\n"); //4.removeAll(Collection coll1);差集;从当前集合中移除coll1中的所以元素 coll.removeAll(coll1); System.out.println(coll); System.out.print("\n"); //5.coll.retainAll(coll1);交集;获取当前集合和coll1集合的交集,并返回给当前集合 coll.retainAll(coll1); System.out.println(coll); System.out.print("\n"); //6.coll.equals(coll2);要想返回true,需要当前集合和形参集合的元素都相同。 Collection coll2 = new ArrayList(); System.out.println(coll.equals(coll2)); System.out.print("\n"); //7.hashCode();返回当前对象的哈希值 System.out.println(coll.hashCode()); System.out.print("\n"); //8集合转换为数组: toArray();------数组到集合:调用Arrays类的静态方法asList(); coll.add(123); coll.add(456); coll.add(new String("Tom")); coll.add(false); Object[] arr = coll.toArray(); for(int i = 0 ; i < arr.length ; i ++) { System.out.print(arr[i] + " "); } System.out.print("\n"); List<String> list = Arrays.asList(new String[]{"AA","BB","CC"}); System.out.print(list); System.out.print("\n"); List arr1 = Arrays.asList(new int[]{123,456}); System.out.println(arr1.size()); List arr2 = Arrays.asList(new Integer[]{123,456});//小细节,用包装类定义数组 System.out.println(arr2.size()); //9.iterator();返回Iterator接口的实例,用于遍历集合元素。 } }
public class Person { private String name; private int age; public Person() {} public Person(String name , int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString() { return "Person{" + "name" + name + '\'' + ", age=" + age + '}'; } }
结果:
每日练习: