java笔记目录

  • 1、集合概述
  • 2 Collection 接口 & List 接口 实例
    • 2.1 List 的增删改查功能
    • 2.2 泛型![在这里插入图片描述](https://img-blog.csdnimg.cn/2019010619112960.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2MTA3MzQ2,size_16,color_FFFFFF,t_70)
  • 3 Set集合的操作

1、集合概述



java中的集合框架:

2 Collection 接口 & List 接口 实例



学生类

import java.util.HashSet;
import java.util.Set;public class Student {public String id;public String name;public Set<Course> courses;public Student(String id, String name) {this.id = id;this.name = name;this.courses = new HashSet<Course>();}
}
/*** 课程类* @author 93199**/
public class Course {public String id;public String name;public Course(String id, String name) {this.id = id;this.name = name;}public Course(){}
}

2.1 List 的增删改查功能

package com.zt.collection;import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;public class ListTest {public List coursesToSelect;public ListTest() {this.coursesToSelect = new ArrayList();}public void testAdd() {Course cr1 = new Course("1", "数据结构");coursesToSelect.add(cr1);Course temp = (Course) coursesToSelect.get(0);System.out.println("添加了课程" + temp.id + ":" + temp.name);Course cr2 = new Course("2", "C语言");coursesToSelect.add(0, cr2);Course temp2 = (Course) coursesToSelect.get(0);System.out.println("添加了课程" + temp2.id + ":" + temp2.name);// 以下方法会抛出数组下标越界// Course cr3 = new Course("3", "java课程");// coursesToSelect.add(3, cr3);// Course temp3 = (Course) coursesToSelect.get(0);// System.out.println("添加了课程" + temp3.id + ":" + temp3.name);Course[] course = { new Course("3", "离散数学"), new Course("4", "汇编语言") };coursesToSelect.addAll(Arrays.asList(course));Course temp3 = (Course) coursesToSelect.get(2);Course temp4 = (Course) coursesToSelect.get(3);System.out.println("添加了两门课程" + temp3.id + ":" + temp3.name + ":" + temp4.id + ":" + temp4.name);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("添加了两门课程" + temp5.id + ":" + temp5.name + ":" + temp6.id + ":" + temp6.name);// List可以添加重复元素Course cr3 = new Course("1", "数据结构");coursesToSelect.add(cr3);Course temp7 = (Course) coursesToSelect.get(0);System.out.println("添加了课程" + temp7.id + ":" + temp7.name);}/*** 通过 for 方法遍历List*/public void getList() {int size = coursesToSelect.size();System.out.println("有如下课程待选:");for (int i = 0; i < size; i++) {Course cr = (Course) coursesToSelect.get(i);System.out.println("添加了课程" + cr.id + ":" + cr.name);}}/*** 通过迭代器来遍历List*/public void testIterator() {// 通过集合的iterator方法,取得迭代器的实例。System.out.println("有如下课程待选(通过迭代器访问):");Iterator iterator = coursesToSelect.iterator();while (iterator.hasNext()) {Course cr = (Course) iterator.next();System.out.println("添加了课程" + cr.id + ":" + cr.name);}}/*** 通过 for each 方法访问集合元素* * @param args*/public void testForEach() {System.out.println("有如下课程待选(通过ForEach访问):");for (Object object : coursesToSelect) {Course cr = (Course) object;System.out.println("添加了课程" + cr.id + ":" + cr.name);}}/*** 修改List中的元素* * @param args*/public void testModify() {coursesToSelect.set(6, new Course("7", "毛概"));}/*** 删除List 中的元素* * @param args*/public void testRemove() {Course cr = (Course) coursesToSelect.get(6);System.out.println("我是课程" + cr.id + ", 我即将被删除");coursesToSelect.remove(cr);// coursesToSelect.remove(6);// 批量删除// Course[]// courses={(Course)coursesToSelect.get(5),(Course)coursesToSelect.get(6)};// coursesToSelect.removeAll(Arrays.asList(courses));System.out.println("成功删除课程");testForEach();}/*** 往List 中添加一些奇怪的东西* * @param args*/public void testAddOther() {System.out.println("能否网List中添加一些奇怪的东西呢?");coursesToSelect.add("我不是课程,我是字符串!");}public static void main(String[] args) {ListTest lt = new ListTest();lt.testAdd();lt.getList();lt.testIterator();lt.testModify();lt.testForEach();lt.testRemove();}
}
添加了课程1:数据结构
添加了课程2:C语言
添加了两门课程3:离散数学:4:汇编语言
添加了两门课程5:高等数学:6:大学英语
添加了课程2:C语言
有如下课程待选:
添加了课程2:C语言
添加了课程1:数据结构
添加了课程5:高等数学
添加了课程6:大学英语
添加了课程3:离散数学
添加了课程4:汇编语言
添加了课程1:数据结构
有如下课程待选(通过迭代器访问):
添加了课程2:C语言
添加了课程1:数据结构
添加了课程5:高等数学
添加了课程6:大学英语
添加了课程3:离散数学
添加了课程4:汇编语言
添加了课程1:数据结构
有如下课程待选(通过ForEach访问):
添加了课程2:C语言
添加了课程1:数据结构
添加了课程5:高等数学
添加了课程6:大学英语
添加了课程3:离散数学
添加了课程4:汇编语言
添加了课程7:毛概
我是课程7, 我即将被删除
成功删除课程
有如下课程待选(通过ForEach访问):
添加了课程2:C语言
添加了课程1:数据结构
添加了课程5:高等数学
添加了课程6:大学英语
添加了课程3:离散数学
添加了课程4:汇编语言

2.2 泛型

public class ChildCourse extends Course {}
import java.util.ArrayList;
import java.util.List;public class TestGeneric {/*** 带有泛型----Course,的List类型属性*/public List<Course> courses;public TestGeneric() {this.courses = new ArrayList<Course>();}/*** 测试增加* @param args*/private void testAdd() {Course cr = new Course("1", "大学语文");courses.add(cr);Course cr2 = new Course("2", "java基础");courses.add(cr2);// 泛型集合中,不能添加泛型规定类型和泛型子类型以外的类型,否则会报错。// courses.add("能添加字符串吗?");}/*** 测试循环遍历* @param args*/private void testForEach() {for (Course cr : courses) {System.out.println(cr.id + "," + cr.name);}}/*** 泛型集合可以添加泛型的子类型的对象实例* @param args*/private void testChild() {ChildCourse ccr = new ChildCourse();ccr.id = "3";ccr.name = "我是子类型的课程对象实例~~";courses.add(ccr);}/*** 泛型不能使用基本类型* @param args*/private void testBasicType() {// 不能使用基本类型// List<int> list=new ArrayList<int>();List<Integer> list = new ArrayList<Integer>();list.add(1);System.out.println("基本类必须使用包装类作为泛型" + list.get(0));}public static void main(String[] args) {TestGeneric tg = new TestGeneric();tg.testAdd();tg.testForEach();tg.testChild();tg.testForEach();tg.testBasicType();}
}
1,大学语文
2,java基础
1,大学语文
2,java基础
3,我是子类型的课程对象实例~~
基本类必须使用包装类作为泛型1

3 Set集合的操作

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;public class SetTest {public List<Course> coursesToSelect;public SetTest() {coursesToSelect = new ArrayList<Course>();}public void testAdd() {Course cr1 = new Course("1", "数据结构");coursesToSelect.add(cr1);Course temp = (Course) coursesToSelect.get(0);// System.out.println("添加了课程" + temp.id + ":" + temp.name);Course cr2 = new Course("2", "C语言");coursesToSelect.add(0, cr2);Course temp2 = (Course) coursesToSelect.get(0);// System.out.println("添加了课程" + temp2.id + ":" + temp2.name);// 以下方法会抛出数组下标越界// Course cr3 = new Course("3", "java课程");// coursesToSelect.add(3, cr3);// Course temp3 = (Course) coursesToSelect.get(0);// System.out.println("添加了课程" + temp3.id + ":" + temp3.name);Course[] course = { new Course("3", "离散数学"), new Course("4", "汇编语言") };coursesToSelect.addAll(Arrays.asList(course));Course temp3 = (Course) coursesToSelect.get(2);Course temp4 = (Course) coursesToSelect.get(3);// System.out.println("添加了两门课程" + temp3.id + ":" + temp3.name + ":" +// temp4.id + ":" + temp4.name);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("添加了两门课程" + temp5.id + ":" + temp5.name + ":" +// temp6.id + ":" + temp6.name);// List可以添加重复元素// Course cr3 = new Course("1", "数据结构");// coursesToSelect.add(cr3);// Course temp7 = (Course) coursesToSelect.get(0);// System.out.println("添加了课程" + temp7.id + ":" + temp7.name);}/*** 通过 for each 方法访问集合元素* * @param args*/public void testForEach() {System.out.println("有如下课程待选(通过ForEach访问):");for (Object object : coursesToSelect) {Course cr = (Course) object;System.out.println("添加了课程" + cr.id + ":" + cr.name);}}public static void main(String[] args) {SetTest st = new SetTest();st.testAdd();st.testForEach();// 创建一个学生对象Student student = new Student("1", "小明");System.out.println("欢迎学生:" + student.name + "选课!");// 创建一个Scanner 对象,用来接收从键盘输入的课程IDScanner console = new Scanner(System.in);for (int i = 0; i < 3; i++) {System.out.println("请输入课程ID");String courseId = console.next();for (Course cr : st.coursesToSelect) {if (cr.id.equals(courseId)) {student.courses.add(cr);/*** Set中,重复数据只会保留一个对象。可以添加null。*/
//                  student.courses.add(null);
//                  student.courses.add(cr);}}}// 打印输出,学生所选的课st.testForEachForSet(student);}public void testForEachForSet(Student student) {// 打印输出,学生所选的课程for (Course course : student.courses) {System.out.println("选择了课程:" + course.id + ":" + course.name + "");}}}
有如下课程待选(通过ForEach访问):
添加了课程2:C语言
添加了课程1:数据结构
添加了课程5:高等数学
添加了课程6:大学英语
添加了课程3:离散数学
添加了课程4:汇编语言
欢迎学生:小明选课!
请输入课程ID
2
请输入课程ID
1
请输入课程ID
4
选择了课程:2:C语言
选择了课程:1:数据结构
选择了课程:4:汇编语言

Java开发笔记(四)之集合框架List与Set相关推荐

  1. JAVA基础第四章-集合框架Collection篇

    业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...

  2. 【JAVA SE】第十四章 集合框架、语法糖和泛型

    第十四章 集合框架.语法糖和泛型 文章目录 第十四章 集合框架.语法糖和泛型 一.集合框架 1.概念 2.接口 二.语法糖 1.概念 2.解语法糖 三.泛型 1.概念 2.泛型类 3.泛型接口 4.泛 ...

  3. Java基础知识强化之集合框架笔记76:ConcurrentHashMap之 ConcurrentHashMap简介

    1. ConcurrentHashMap简介: ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和Hashtable功能相同但是线程安全的方法.Conc ...

  4. Java开发笔记(五十六)利用枚举类型实现高级常量

    前面介绍了联合利用final和static可实现常量的定义,该方式用于简单的常量倒还凑合,要是用于复杂的.安全性高的常量,那就力不从心了.例如以下几种情况,final结合static的方式便缺乏应对之 ...

  5. Java开发笔记(二十三)数组工具Arrays

    数组作为一种组合形式的数据类型,必然要求提供一些处理数组的简便办法,包括数组比较.数组复制.数组排序等等.为此Java专门设计了Arrays工具,该工具包含了几个常用方法,方便程序员对数组进行加工操作 ...

  6. Java开发笔记(五十)几种开放性修饰符

    前面介绍子类继承父类的时候,提到了public(公共)和private(私有)两个修饰符,其中public表示它所修饰的实体是允许外部访问的:而private表示它所修饰的实体不允许外部访问,只能在当 ...

  7. (硅谷课堂项目)Java开发笔记4:前端基础知识(二)

    文章目录 (硅谷课堂项目)Java开发笔记4:前端基础知识(二) 一.NPM 1.NPM简介 1.1.什么是NPM 1.2.NPM工具的安装位置 2.使用npm管理项目 2.1.创建文件夹npm 2. ...

  8. 【Visual C++】游戏开发笔记四十三 浅墨DirectX教程十一 为三维世界添彩:纹理映射技术(二)...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 作者:毛星云(浅墨)    邮箱: happylifemxy@163.com 本篇文章里,我们首先对Direct3D之中固定功能流水线中的 ...

  9. (硅谷课堂项目)Java开发笔记2:项目概述,搭建项目环境和开发讲师管理接口

    文章目录 (硅谷课堂项目)Java开发笔记2:项目概述,搭建项目环境和开发讲师管理接口 1.项目概述 1.1 项目介绍 1.2 硅谷课程流程图 1.3 硅谷课堂功能架构 1.4 硅谷课堂技术架构 1. ...

  10. Java 开发笔记 - wangEditor 编辑器图片上传

    Java 开发笔记 - wangEditor 编辑器图片上传 前言 转型 java 开发后入手的第一个项目,写写博客记录一下 该项目使用的是 sping boot + mybatis plus + t ...

最新文章

  1. OpenCV代码提取:rotate函数的实现
  2. tomcat配置manager
  3. Java配置多数据源access,java联接MS ACCESS,无需配置数据源
  4. 2.3 Logistic 回归损失函数-深度学习-Stanford吴恩达教授
  5. MATLAB AWGN信道 M-ary PSK 误码性能
  6. 1491. [NOI2007]社交网络【最短路计数】
  7. 北航java大作业,北航成人继续教育 本科 计算机科学与技术 JAVA——大作业.doc
  8. php 判断当前栏目高亮,Phpcms V9采用if语句判断当前栏目高亮、判断分类信息是否过期...
  9. [vue-cli] vue-cli工程中常用的npm命令有哪些
  10. python实现图像检索的三种(直方图/OpenCV/哈希法)
  11. /usr/bin/env: escript: No such file or directory的解决办法
  12. 【软件工程】根据数据流图导出程序结构
  13. 硬盘分区的类型:mbr分区和gpt分区的区别
  14. 超全!40000字 Matplotlib 实战
  15. 【转】统一μITRON,日本成立开放源码ITRON团体
  16. [k8s集群系列-09]Kubernetes 组件 Dashboard
  17. mapinfo mif/mid文件格式详解
  18. linux给音乐添加封面,linux系统获取MP3的专辑封面图片
  19. 《屏幕上的聪明决策》:4星。人类在手机/电脑上做选择的心理学研究的综述。不流畅的文本有助于理解和记忆,淘汰赛制可以有效降低选择后懊悔。...
  20. 深度剖析E680G应用五.Telnet与主题

热门文章

  1. CentOS 7 安装惠普打印机驱动
  2. Appium+python自动化(九)- 定位元素工具(义结金兰的两位异性兄弟)(超详解)...
  3. Linux初学者学习方法
  4. 易查分应用大全:查询统计功能使用说明
  5. 大咖实战分享 | 实现中小微企业金融服务场景经验分享
  6. 一种针对SOA的消息类型架构
  7. solidwork导出Ascii格式的STL文件
  8. 纪中DAY10做题小结
  9. 学习GWAS高效的方法
  10. 什么是伪数组 以及伪数组转真数组的方法