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;}}
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 Listcourses;/** * 重写构造器,初始化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();}}
- Java集合:集合框架
- java集合---set集合
- JAVA 集合 的 集合
- 【集合】Java集合对比
- JAVA集合-Map集合
- JAVA集合-Set集合
- JAVA集合-List集合
- java集合------Map集合
- Java集合----List集合
- Java集合----Set集合
- Java集合----Map集合
- JAVA集合
- JAVA集合
- Java集合
- JAVA集合
- Java集合
- Java集合
- java 集合
- 结果集(ResultSet)用法
- 数据导入 导出
- [ReactNative][iOS]之真机调试与离线包方式
- 下班后,高效生活的10个日常习惯
- Windows10下关于解决MySQL5.5数据库命令行中文乱码问题以及sqlyog11.3.3-64位秘钥
- java-集合
- java环境配置
- NOTEPAD++添加JSON格式化插件
- JavaScript中的引用函数、调用函数和回调函数
- 要刷dfs的题了
- 创建用户 授权
- 基本输入输出练习 hdu1089-1096
- 长知识了 stl里面的sort三个排序混着 只知道这个 源码还没研究过
- 配置weblogic