java-集合

来源:互联网 发布:淘宝拍卖行的东西 编辑:程序博客网 时间:2024/06/05 05:11

一、集合的概念

现实生活中:很多的事物凑在一起;

数学中:具有共同属性的事物的总体;

Java中的集合类:是一种工具类,就像容器,储存任意数量的具有共同属性的对象。

二、集合的作用

1、在类的内部,对数据进行组织;

2、简单而快速的搜索大量数目的条目;

3、有的集合接口,提供了一系列排列有序的元素,并且可以在序列中间快速的插入或删除有关元素;

4、有的集合接口,提供了映射关系,可以通过关键字key去快速查找对应的唯一对象,而这个关键字可以是任意类型;

三、集合与数组对比的优势

1、数组的长度固定,集合长度可变

2、数组只能通过下标访问元素,类型固定,而有的集合可以通过任意类型查找所映射的对象。

四、Java集合体系框架


(一)、Collection 接口,是List、Queue、Set接口的父接口,定义了可用于操作List、Set和Queue的方法(增删改查)。

1、List接口及实现类-ArrayList

      List是元素有序并且可以重复的集合,被称为序列;

      List可以精确控制每个元素的插入的位置或删除某个位置的元素;

      ArrayList:数组序列,是List集合中使用最高的实现类;底层是由数组实现的。

比较重要的方法:

add(),addAll();向集合添加元素

get();在集合中取出元素

remove();removeAll();删除指定元素

set();修改集合中的元素


注意:集合中的元素,可以是任意类型的对象(对象的引用),如果把某个对象放入集合,则会忽略它的类型,而把他当做Object处理。

例如:学生 选课系统

Course类:

package com.collection;/** * 课程类 * @author Timor * */public class Course {public String id;public String name;public Course(String id,String name){this.id = id;this.name = name;}}
Student类:

package com.collection;import java.util.HashSet;import java.util.Set;/** * 学生类 * @author Timor * */public class Student {public String id;public String name;public Set courses;public Student(String id,String name){this.id = id;this.name = name;this.courses = new HashSet();}}
初始化类:

package com.collection;import java.util.ArrayList;import java.util.Arrays;import java.util.Iterator;import java.util.List;/** * 备选课程类 *  * @author Timor *  */public class ListTest {public List coursesToSelect;public ListTest() {this.coursesToSelect = new ArrayList();}/* * 用于往courseToSelect中添加备选课程 */public void testAdd() {// 创建一个课程对象,并通过add方法添加到备选课程list中Course c1 = new Course("1", "数据结构");coursesToSelect.add(c1);// 对象存入集合都会变成Object类型,取出时需要类型转换Course temp = (Course) coursesToSelect.get(0);System.out.println("添加课程:" + temp.id + ":" + temp.name);Course c2 = new Course("2", "Java");// 添加到指定的位置,如果超出集合长度,会报出数组下标越界异常coursesToSelect.add(0, c2);Course temp2 = (Course) coursesToSelect.get(0);System.out.println("添加课程:" + temp2.id + ":" + temp2.name);// 将指定 collection 中的所有元素都添加到此 collection 中Course[] course = { new Course("3", "Php"), new Course("4", "C语言") };coursesToSelect.addAll(Arrays.asList(course));Course temp3 = (Course) coursesToSelect.get(2);Course temp4 = (Course) coursesToSelect.get(3);System.out.println("再次添加课程:" + temp3.id + ":" + temp3.name);System.out.println("再次添加课程:" + temp4.id + ":" + temp4.name);// 将指定 collection 中的所有元素都添加到此 collection 指定的位置中Course[] course2 = { new Course("5", "高数"), new Course("6", "英语") };coursesToSelect.addAll(2, Arrays.asList(course2));Course temp5 = (Course) coursesToSelect.get(2);Course temp6 = (Course) coursesToSelect.get(3);System.out.println("AddAll二次添加课程:" + temp5.id + ":" + temp5.name);System.out.println("AddAll二次添加课程:" + temp6.id + ":" + temp6.name);}/** * 取得List中的元素的方法 *  */public void testGet(){//获取list的长度int size = coursesToSelect.size();System.out.println("有如下课程待选:");for(int i=0;i


四、泛型。

泛型规定了某个集合只可以存放特定类型的对象,会在编译期间进行类型检查,可以直接按指定类型获取集合元素。

泛型集合中不仅可以存放泛型类型的实例,也可以存放泛型的子类型。

泛型类:

package com.collection;import java.util.ArrayList;import java.util.List;public class TestGeneric {/** * 带有泛型---Course,的List的属性 * @author Timor * */public List courses;/** * 重写构造器,初始化course泛型 */public TestGeneric(){this.courses = new ArrayList();}/** * 测试添加 * @param args */public void testAdd(){Course course = new Course("1","Java");courses.add(course);//泛型集合中,不能添加泛型规定类型及其子类型之外的对象,否则报错。//courses.add("能否添加其他类型的数据");Course course2 = new Course("2","PHP");courses.add(course2);}/** * 通过foreach访问 * @param args */public void testForEach(){//泛型不用强转for(Course cr : courses){System.out.println(cr.id + ":" +cr.name);}}public static void main(String[] args) {// TODO Auto-generated method stubTestGeneric tg = new TestGeneric();tg.testAdd();tg.testForEach();}}




原创粉丝点击