资讯专栏INFORMATION COLUMN

JAVA学习之路 (十)集合

sutaking / 413人阅读

摘要:集合中的集合是一种工具类,就像是容器,存储任意数量的具有共同属性的对象集合的作用在类的内部,对数据进行组织简单而快速的搜索大量数目的条目有的集合接口,提供了一系列排列有序的元素,并且可以在序列中进行快速的插入和删除有些集合接口,提供了映射关

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

集合的作用

1. 在类的内部,对数据进行组织
2. 简单而快速的搜索大量数目的条目
3. 有的集合接口,提供了一系列排列有序的元素,并且可以在序列中进行快速的插入和删除
4. 有些集合接口,提供了映射关系,可以通过关键字key去快速的查找到对应的唯一对象

集合和数组的区别

1. 数组的长度是固定的,但是集合可变
2. 数组只能通过数组下标查找,类型固定,而有的集合可以通过任意类型查找所映射的对象
java集合的框架

Collection 接口
Collection接口 是List、Set、Queue的父接口,

List接口之ArrayList

1. List是元素有序并且可重复的集合,被称为是序列
2. List可以精准控制每个元素的插入和删除
3. ArrayList --数组序列,是一个重要实现类
4. ArrayList底层是数组实现的

ArrayList的增删改查

package com.collection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

/**
 * 备选课程类
 * @author zjj
 * ArrayList的增删改查
 *
 */
public class ListTest {
    private List coursesList; // 备选课程列表
    
    
    public ListTest() {
        this.coursesList = new ArrayList();
    }


    public List getCoursesList() {
        return coursesList;
    }


    public void setCoursesList(List coursesList) {
        this.coursesList = coursesList;
    }
    // 添加课程
    public void listAdd() {
        // 添加一个课程
        course c1 = new course("1", "c语言");
        coursesList.add(c1);
        course temp = (course)coursesList.get(0);
        System.out.println("添加了课程:"+temp.getId()+";"+temp.getName());
        
        
        course cr2=new course("2","数据结构");
        coursesList.add(0,cr2);
        course temp2=(course)coursesList.get(1);
        System.out.println("添加了课程:"+temp2.getId()+";"+temp2.getName());
        /**course cr2=new course("2","C语言");
        coursesList.add(4,cr2);
        报错,数组下标越界*/ 
        
        // 添加一个数组进去
        course [] course = {new course("3","离散"), new course("4","毛概")};
        coursesList.addAll(Arrays.asList(course)); 
        course temp3 = (course) coursesList.get(2);
        course temp4 = (course) coursesList.get(3);
        System.out.println("添加了课程:"+temp3.getId()+";"+temp3.getName());
        System.out.println("添加了课程:"+temp4.getId()+";"+temp4.getName());
        
        course [] course1 = {new course("5","网络"), new course("6","信息")};
        coursesList.addAll(2,Arrays.asList(course1)); 
        course temp5 = (course) coursesList.get(2);
        course temp6 = (course) coursesList.get(3);
        System.out.println("添加了课程:"+temp5.getId()+";"+temp5.getName());
        System.out.println("添加了课程:"+temp6.getId()+";"+temp6.getName());
        
    }
    
    /**
     * for循环遍历List
     */
    public void testGet() {
        int len = coursesList.size(); // 获取到ArrayList的长度
        System.out.println("=========================");
        for(int i = 0; i < len; i++) {
            course temp = (course) coursesList.get(i);
            System.out.println("添加了课程:"+temp.getId()+";"+temp.getName());
        }
        
    }
    /**
     * 通过迭代器来遍历List
     */
    public void Listget() {
        Iterator it = coursesList.iterator(); // 迭代器方法
        System.out.println("==========迭代器===============");
        while(it.hasNext()) {
            course lt = (course) it.next();
            System.out.println("添加了课程:"+lt.getId()+";"+lt.getName());
        }
    }
    
    /**
     * 通过foreach遍历
     */
    
    public void testForEach() {
        System.out.println("==========forEach循环===============");
        for(Object obj :coursesList) {
            course cr = (course) obj;
            System.out.println("添加了课程:"+cr.getId()+";"+cr.getName());
        }
    }
    
    /**
     * 修改课程
     */
    public void modify() {
        coursesList.set(2, new course("10", "修改的name"));
        
    }
    /**
     * 删除课程
     */
    
    public void delete() {
        course cr = (course) coursesList.get(4);
        coursesList.remove(cr);
//        coursesList.remove(4); 效果同上
        
        // 同时删除多个
        course [] courses = {(course) coursesList.get(1), (course) coursesList.get(2)};
        coursesList.removeAll(Arrays.asList(courses));
        
    }
    
}

泛型管理

1.集合中的元素是可以是任意类型的对象,如果把这个对象放入集合,则会忽略它的类别,而把他当作是一个Object来处理,这也就是我们为什么需要进行强制类型转换为course的原因了

2.泛型则是规定了某一个集合中只能存放某些特定类型的对象,会在编译期间进行类型检查,可以直接按照指定的类型获取元素

package com.collection;

import java.util.ArrayList;
import java.util.List;

/**
 * 测试泛型
 * @author zjj
 *
 */
public class testGeneric {
    // 泛型就是在<>中写明规定的类型
    public List courseList;
    
    public testGeneric() {
        this.courseList = new ArrayList();
    }
    
    public void add () {
        course c = new course("1","语文");
        courseList.add(c);
    }
    
    public void forEach() {
        // 注意这里,我们可以直接使用course,不需要先写成Object,再强转
        for(course c: courseList) {
            System.out.println("课程:" +c.getId()+";"+c.getName());
        }
    }
    
    public static void main(String [] args) {
        testGeneric d = new testGeneric();
        d.add();
        d.forEach();
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/76773.html

相关文章

  • 我的阿里之路+Java面经考点

    摘要:我的是忙碌的一年,从年初备战实习春招,年三十都在死磕源码,三月份经历了阿里五次面试,四月顺利收到实习。因为我心理很清楚,我的目标是阿里。所以在收到阿里之后的那晚,我重新规划了接下来的学习计划,将我的短期目标更新成拿下阿里转正。 我的2017是忙碌的一年,从年初备战实习春招,年三十都在死磕JDK源码,三月份经历了阿里五次面试,四月顺利收到实习offer。然后五月怀着忐忑的心情开始了蚂蚁金...

    姘搁『 评论0 收藏0
  • 【全栈之路JAVA基础课程一_JDK8大新特性(20190706v1.2)

    摘要:欢迎进入基础课程博客地址本系列文章将主要针对一些基础知识点进行讲解,为平时归纳所总结,不管是刚接触开发菜鸟还是业界资深人士,都希望对广大同行带来一些帮助。语法是,或者更一般的,要求构造器方法是没有参数静态方法引用。 欢迎进入JAVA基础课程 博客地址:https://blog.csdn.net/houjiyu...本系列文章将主要针对JAVA一些基础知识点进行讲解,为平时归纳所总结,...

    lcodecorex 评论0 收藏0
  • 【全栈之路JAVA基础课程一_JDK8大新特性(20190706v1.2)

    摘要:欢迎进入基础课程博客地址本系列文章将主要针对一些基础知识点进行讲解,为平时归纳所总结,不管是刚接触开发菜鸟还是业界资深人士,都希望对广大同行带来一些帮助。语法是,或者更一般的,要求构造器方法是没有参数静态方法引用。 欢迎进入JAVA基础课程 博客地址:https://blog.csdn.net/houjiyu...本系列文章将主要针对JAVA一些基础知识点进行讲解,为平时归纳所总结,...

    VPointer 评论0 收藏0
  • 开发之路(设计模式:迭代器模式上)

    摘要:感谢你看到这里,迭代器模式上部分到这里就结束了,本人文笔随便,若有不足或错误之处望给予指点,度弯腰很快我会补全这个内容,生命不息,编程不止参考书籍设计模式 有许多种方法可以把对象堆起来成为一个集合 好消息,当地的餐厅和煎饼屋合并了,但是两者实现的方式却不同,这就造成了分歧。让我们一起去看看把。showImg(https://segmentfault.com/img/bVV5sB?w=...

    Thanatos 评论0 收藏0
  • 【全栈之路JAVA基础课程_JAVA虚拟机(20190706v1.1)

    摘要:虚拟机实现了语言最重要的特征平台无关性。基本组成详细框架步骤从操作系统的角度看来,虚拟机人只是一个普通进程。虚拟机能够加载我们编写的文件食物。虚拟机中的执行引擎肠胃用来执行文件中的字节码指令。虚拟机在执行过程中,要分配内存创建对象。 欢迎进入JAVA基础课程 博客地址:https://blog.csdn.net/houjiyu...本系列文章将主要针对JAVA一些基础知识点进行讲解,...

    imccl 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<