标签: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
javapackage 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之集合框架
原文地址:http://11841428.blog.51cto.com/11831428/1861666