首页 > 代码库 > java之集合框架
java之集合框架
1.集合的由来:
我们学习的是面向对象的语言。而面向对象语言对事物的描述是通过对象体现的。为了方便对多个对象进行操作,我们就必须把多个对象进行存储。而要想存储多个对象,就不能是一个基本的变量,而应该是一个容器类型的变量。在我们目前所学过的知识里面,有哪些是容器类型的呢?数组和StringBuffer。但是StringBuffer的结果是一个字符串, 不一定符合我们的要求,所以我们只能选择数组,这就是对象数组。而对象数组又不能适应变化的需求。因为数组的长度是固定的。这个时候,为了适应变化的需求,java就提供了集合框架。
2.集合和数组的区别?
1.长度的区别
数组的长度固定,而集合的长度可变。
2.内容不同
数组存储的是同一种类型的元素,而集合可以存储不同类型的元素。
3.元素的数据类型
数组可以存储基本数据类型,也可以存储引用数据类型。
集合只能存储引用数据类型。
3.集合继承体系的由来
集合是存储多个元素的,但是,存储多个元素我们也是有不同需求的;比如说,我要这多个元素中不能有相同的元素。再比如说,我要这多个元素按照某种规则排序。针对不同的需求,java就提供了不同的集合类。这样呢,java就提供了很多个集合类,这多个集合类的数据结构不同。结构不同不重要,重要的是能存储数据,并且保证还能够使用这些东西,比如判断,获取等等。既然这样,这多个集合类是有共性的内容,我们把这些集合类的共性内容不断进行抽象,最终就能形成集合的继承体系结构。
4.数据结构解释
数据的物理结构不同,即数据的存储结构不同。
5.集合继承体系的图解
6.Collection接口概述
Collection层次结构中的根接口。Collection中存储的对象,称为Collection中的元素。一些Collection允许有重复的元素,而另一些则不允许有重复的元素。一些Collection是有序的,而另外一些则是无序的。
7.Collection的功能概述
添加功能:
public boolean add(E e):添加一个元素
public boolean addAll(Collection c):存储一个集合的元素
删除功能:
public void clear():移除所有元素
public boolean remove(E e):移除一个元素
public boolean removeAll(Collection c):移除一个集合的元素
判断功能:
public boolean contains(E e):判断集合中是否存在指定的元素
public boolean containsAll(Collection c):判断集合是否包含指定的集合元素
public boolean isEmpty():判断集合是否为空
获取功能:
public Iterator<E> iterator():返回在此集合的元素上的迭代的迭代器
交集功能:
public boolean retainAll(Collection c):两个集合都有的元素
长度功能
public int size():返回集合中元素的个数
把集合转换为数组
public Object[] toArray()
package com; import java.util.ArrayList; import java.util.Collection; /** * 集合框架 * * 集合的由来: * 我们学习的是面向对象的语言。而面向对象语言对事物的描述是通过对象体现的。为了方便对多个对象进行操作, * 我们就必须把多个对象进行存储。而要想存储多个对象,就不能是一个基本的变量,而应该是一个容器类型的变量。 * 在我们目前所学过的知识里面,有哪些是容器类型的呢?数组和StringBuffer。 * 但是StringBuffer的结果是一个字符串, 不一定符合我们的要求,所以我们只能选择数组,这就是对象数组。 * 而对象数组又不能适应变化的需求。因为数组的长度是固定的。这个时候,为了适应变化的需求,java就提供了集合框架。 * * 集合和数组的区别? * 1.长度的区别 * 数组的长度固定,而集合的长度可变。 * 2.内容不同 * 数组存储的是同一种类型的元素,而集合可以存储不同类型的元素。 * 3.元素的数据类型 * 数组可以存储基本数据类型,也可以存储引用数据类型 * 集合只能存储引用数据类型 * * 集合是存储多个元素的,但是,存储多个元素我们也是有不同需求的;比如说,我要这多个元素中不能有相同的元素。 * 再比如说,我要这多个元素按照某种规则排序。针对不同的需求,java就提供了不同的集合类。 * 这样呢,java就提供了很多个集合类,这多个集合类的数据结构不同。结构不同不重要,重要的是能存储数据, * 并且保证还能够使用这些东西,比如判断,获取等等。既然这样,这多个集合类是有共性的内容,我们把这些集合类的 * 共性内容不断进行抽象,最终就能形成集合的继承体系结构。 * * 数据结构:数据的物理结构不同,即数据的存储结构不同。 * * Collection的功能概述 * 添加功能: * public boolean add(E e):添加一个元素 * public boolean addAll(Collection c):存储一个集合的元素 * 删除功能: * public void clear():移除所有元素 * public boolean remove(E e):移除一个元素 * public boolean removeAll(Collection c):移除一个集合的元素 * 判断功能: * public boolean contains(E e):判断集合中是否存在指定的元素 * public boolean containsAll(Collection c):判断集合是否包含指定的集合元素 * public boolean isEmpty():判断集合是否为空 * 获取功能: * public Iterator<E> iterator():返回在此集合的元素上的迭代的迭代器 * 交集功能 * public boolean retainAll(Collection c):两个集合都有的元素 * 长度功能 * public int size():返回集合中元素的个数 * 把集合转换为数组 * public Object[] toArray() * * * * * */ public class CollectionDemo { public static void main(String[] args) { //创建集合对象 Collection c = new ArrayList(); System.out.println(c);//[] //public boolean add(E e):添加一个元素 System.out.println(c.add("hello"));//true System.out.println(c);//[hello] c.add("world"); c.add("java"); System.out.println(c);//[hello, world, java] //public boolean contains(E e):判断集合中是否存在指定的元素 System.out.println(c.contains("hello"));//true //public boolean isEmpty():判断集合是否为空 System.out.println(c.isEmpty());//false //public int size():返回集合中元素的个数 System.out.println(c.size());//3 //public boolean remove(E e):移除一个元素 c.remove("hello"); System.out.println(c);//[world, java] //public void clear():移除所有元素 c.clear(); System.out.println(c);//[] } }
package com; import java.util.ArrayList; import java.util.Collection; public class CollectionDemo2 { public static void main(String[] args) { //创建集合1 Collection c1 = new ArrayList(); c1.add("abc1"); c1.add("abc2"); c1.add("abc3"); c1.add("abc4"); //创建集合2 Collection c2 = new ArrayList(); c2.add("abc4"); c2.add("abc5"); c2.add("abc6"); c2.add("abc7"); System.out.println("c1:"+c1+",c2:"+c2);//c1:[abc1, abc2, abc3, abc4],c2:[abc4, abc5, abc6, abc7] //public boolean addAll(Collection c) c1.addAll(c2); System.out.println("c1:"+c1+",c2:"+c2);//c1:[abc1, abc2, abc3, abc4, abc4, abc5, abc6, abc7],c2:[abc4, abc5, abc6, abc7] //public boolean removeAll(Collection c) 只要有一个被移除了,就算移除 c1.removeAll(c2); System.out.println("c1:"+c1+",c2:"+c2);//c1:[abc1, abc2, abc3],c2:[abc4, abc5, abc6, abc7] //public boolean containsAll(Collection c) //只有包含所有的元素,才叫包含 System.out.println("containsAll:"+c1.containsAll(c2));//containsAll:false //public boolean retainAll(Collection c)求交集 //假设有两个集合A,B //A对B的交集,最终的结果保存在A中,B不变 //返回值表示的是A是否发生变化 System.out.println("retainAll:"+c1.retainAll(c2));//retainAll:true System.out.println("c1:"+c1);//c1:[] System.out.println("c2:"+c2);//c2:[abc4, abc5, abc6, abc7] } }
8.集合的遍历
package com; import java.util.ArrayList; import java.util.Collection; /** * 集合的遍历,其实就是一次获取集合章的每一个元素 * public Object[] toArray() 把集合转成数组,可以实现集合的遍历 * */ public class CollectionDemo3 { public static void main(String[] args) { //创建集合对象 Collection<String> c = new ArrayList<String>(); //添加元素 c.add("hello"); c.add("world"); c.add("java"); //遍历 //public Object[] toArray() Object[] array = c.toArray(); for (int i = 0; i < array.length; i++) { String str = (String)array[i]; System.out.print(str+" ");//hello world java } } }
package com; /** * 学生类 * */ public class Student { private String name; private int age; public Student(){} public Student(String name,int age){ this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Student [name=" + name + ", age=" + age + "]"; } } package com; import java.util.ArrayList; import java.util.Collection; /** * 练习:用集合存储5个学生对象,并把学生对象进行遍历 * * 分析: * 1.创建学生类 * 2.创建集合对象 * 3.创建学生对象 * 4.把学生添加到集合 * 5.把集合转化成数组 * 6.遍历数组 * */ public class StudentDemo { public static void main(String[] args) { //创建集合对象 Collection<Student> c = new ArrayList<Student>(); //创建学生对象 Student s1 = new Student("周星驰",35); Student s2 = new Student("风清扬",22); Student s3 = new Student("宋江",58); Student s4 = new Student("武松",63); Student s5 = new Student("马蓉",130); //把学生对象添加到集合中 c.add(s1); c.add(s2); c.add(s3); c.add(s4); c.add(s5); //把集合转换成数组 Object[] obj = c.toArray(); //遍历数组,输出学生信息 for (int i = 0; i < obj.length; i++) { System.out.println(obj[i]); } } } Student [name=周星驰, age=35] Student [name=风清扬, age=22] Student [name=宋江, age=58] Student [name=武松, age=63] Student [name=马蓉, age=130]
9.集合之迭代器
package com; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; /** * public Iterator<E> iterator() 迭代器,专门用于遍历集合的方式 * */ public class CollectionDemo1 { public static void main(String[] args) { //创建集合对象 Collection<String> c = new ArrayList<String>(); //添加元素 c.add("hello"); c.add("world"); c.add("java"); //使用迭代器进行迭代 for (Iterator<String> iteraotr = c.iterator(); iteraotr.hasNext(); ) { String value = iteraotr.next(); System.out.println(value); } } } hello world java
package com; /** * 学生类 * */ public class Student { private String name; private int age; public Student(){} public Student(String name,int age){ this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Student [name=" + name + ", age=" + age + "]"; } } package com; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; /** * 练习:用集合存储5个学生对象,并把学生对象进行遍历,用迭代进行比那里 * */ public class CollectionDemo4 { public static void main(String[] args) { //创建集合对象 Collection<Student> c = new ArrayList<Student>(); //创建学生对象 Student s1 = new Student("周星驰",35); Student s2 = new Student("风清扬",22); Student s3 = new Student("宋江",58); Student s4 = new Student("武松",63); Student s5 = new Student("马蓉",130); //把学生对象存储到集合之中 c.add(s1); c.add(s2); c.add(s3); c.add(s4); c.add(s5); //使用迭代器进行迭代 for (Iterator<Student> iterator = c.iterator();iterator.hasNext(); ) { Student stu = iterator.next(); System.out.println(stu); } } } Student [name=周星驰, age=35] Student [name=风清扬, age=22] Student [name=宋江, age=58] Student [name=武松, age=63] Student [name=马蓉, age=130]
本文出自 “11831428” 博客,请务必保留此出处http://11841428.blog.51cto.com/11831428/1861666
java之集合框架