List接口和ArrayList类

/*** @author Administrator*学生类*/
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();}

-对象存入集合都变成Object类型,取出时需要进行类型转换。

/*** @author Administrator*备选课程类*/
public class ListTest {public List coursesToSelect;public ListTest(){this.coursesToSelect=new ArrayList();}public void testAdd(){//创建一个课程对象,并通过调用add方法,添加到List中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","123");coursesToSelect.add(cr3);*/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);//也可以设置插入位置如cr2,所以懒不写了System.out.println(temp2.id+temp2.name+temp3.id+temp3.name);Course []course2={new Course("5","高等数学"),new Course("6","大学英语")};}/*** 迭代器遍历,迭代器Iterator是用来遍历集合中元素的,不具备存储功能*/public void testIterator(){Iterator it=coursesToSelect.iterator();while(it.hasNext()){Course cr=(Course)it.next();System.out.println("课程(迭代):"+cr.id+":"+cr.name);}}/*** foreach遍历*/public void testForeach(){for(Object obj:coursesToSelect){Course cr=(Course)obj;}}
}//当使用泛型时,foreach如下
for(Course cour:list){}

Arrays.asList(T a);//将某类型转化为List列表
set();//修改List中元素
remove()//删除List中元素

Set接口和Hashset类

Set是无序且不可重复的,当遍历时,只能选择使用foreach和地带器Iterator遍历

HashMap类

    //修改映射public void testModify(){System.out.println("请输入要修改的学生id");Scanner console=new Scanner(System.in);while(true){String stuid=console.next();//从strudents中查找该学生id对应的学生对象Student st=students.get(stuid);if(st==null){System.out.println("该id不存在,请重新输入");continue;}System.out.println("当前该学生id,对应的学生为"+st.name);System.out.println("请输入学生的姓名");String name=console.next();Student newStudent=new Student(stuid,name);students.put(stuid, newStudent);System.out.println("修改成功");break;}}
//测试Map的keySet方法public void testKeySet(){
//通过keyset方法,返回map中的所有键的set集合               Set<String>keySet=students.keySet();
//取得students容量System.out.println("有"+students.size()+"个"  );
//遍历keyset,取得每一个键,再调用get方法取得每个键的valuefor(String stuID:keySet){Student st=students.get(stuID);if(st!=null){System.out.println("学生:"+st.name );}}}
//删除学生
public void testRemove(){//获取从键盘输入的学生id
Scanner console=new Scanner(System.in);
while(true){//提示输入待删除学生的IDSystem.out.println("请输入要删除的学生ID");String id=console.next();//判断该id是否有对于的学生对象Student st=students.get(id);if(st==null){System.out.println("输入的id不存在");continue;}students.remove(id);System.out.println("成功删除学生"+st.name);break;}
}

//检测序列是否包含某个对象用contains()方法,包含返回true,否则返回false
Course c=new Course();
boolean b=序列的引用.contains(c);

重写equals()方法

为什么要重写equals()方法?

因为有的时候我们判断两个对象是否相等,希望根据类的成员变量是否相等来判断,而不是两个引用对象是否指向同一个对象,因此这时候我们需要重写equals()方法。

如上述的contains()方法,当我们要判断一个对象是否存在集合中时,我们需要先判断集合中是否存在已知对象,其实是对集合进行遍历,然后每一个元素都调用equals()方法进行比较,这样就必须重写equals()。

@Override
public boolean equal(obj){
if(this==obj)return true;
if(obj==null)return false;
if(!(obj instanceof Course))return false;//if(getClass!=obj.getClass())return false;
Course course=(Course)obj;
return this.name.equals(course.name);

快速重写hashCode()和

右键→source→generate hashCode()和equals()

转载于:https://www.cnblogs.com/leungjj/p/6428495.html

JAVA集合框架及其常用方法相关推荐

  1. Java集合框架的知识总结(1)

    Java集合框架的知识总结(1) 所有集合类都位于java.util包下.集合中只能保存对象(保存对象的引用变量). Java的集合类主要由两个接口派生而出:Collection和Map,Collec ...

  2. 容器(一)剖析面试最常见问题之 Java 集合框架

    转载自https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/collection/Java%E9%9B%86%E5%90%88%E ...

  3. java list有序还是无序_牛批!2w字的Java集合框架面试题精华集(2020最新版),赶紧收藏。...

    一个多月前,作者和一些小伙伴决定做一系列的 Java 知识点常见重要问题的小册,方便用来夯实基础!小册的标准就一个,那就是:取精华,取重点.每一本小册,我们都会充分关注我们所总结的知识点是否达到这个标 ...

  4. java集合课程,I学霸官方免费课程三十三:Java集合框架之Map集合

    I学霸官方免费教程三十三:Java集合框架之Map集合 Map接口 Map集合采用键值对(key-value)的方式存储数据,其中键不可以重复.值可以重复. 常用类有HashMap.TreeMap和P ...

  5. Java集合框架之四大接口、常用实现类,java基础面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

  6. Java集合框架知多少——干货!!!

    Java集合框架的组成 注意:四个接口的区别 ① Collection:存储无序的.不唯一的数据: ② List:存储有序的.不唯一的数据: ③ Set:存储无序的.唯一的数据: ④ Map:以键值对 ...

  7. Java OOP 7 JAVA 集合框架

    Java OOP 第七章 JAVA 集合框架 文章目录 Java OOP 第七章 JAVA 集合框架 一.学习目标 二.数组存在的缺陷 三.Java集合框架 四.Collection接口 五.Coll ...

  8. Java集合框架笔记记录 --- 原创@余胜军 但有个人心得

    Java集合框架课程安排 1.集合框架API知识 List/Set/Map集合 2.常见数据结构 数组/链表/队列/树 3.集合源码解读 List/Set/Map1.为什么需要学习Java中集合框架呢 ...

  9. 「Java面试题精华集」1w字的Java集合框架篇(2022最新版)附PDF版

    昨天晚上终于把 Java 集合框架部分的的知识点肝完了,转换成 PDF 一共 25 页,后台回复:"面试突击" 即可免费获取下载地址(同样提供了夜间阅读版本). 集合概述 Java ...

最新文章

  1. Py之pycocotools:pycocotools库的简介、安装、使用方法之详细攻略
  2. Scala 求三个数中的最大数代码示例
  3. Visual Studio 技能GET
  4. 7. 关于IntelliJ IDEA删除项目
  5. 矿井通风计算c语言_矿井通风机主要参数的含义
  6. 多目标进化优化(MOEA)方法
  7. 解决vue视图不渲染
  8. Modelsim-Altera仿真设置
  9. Java爬虫工程师技能列表
  10. 华为手机安装GMS框架
  11. Android 局部刷新
  12. 凯西与拜耳将在中国共同推广呼吸药物宝丽亚和启尔畅
  13. HyperLynx(九)HDMI仿真实例
  14. NBMA网络OSPF路由协议配置
  15. [网络安全课程实验]:PGP加密解密
  16. java js方法_java如何调用js方法
  17. 微信公众平台PHP开发(转载)
  18. 知识库工具 | 微网站、文档中心、形象展示页拖拽即可生成(附模板,直接用)
  19. O2O、C2C、B2B、B2C
  20. 微信又又双叕更新,这次有点厉害了!

热门文章

  1. JAVA线程之生产者消费者问题
  2. Scala-Unit6-final/type关键字、样例类样例对象
  3. 修改工程生成的文件类型
  4. Linux 配置中文环境
  5. 基于jenkins的go语言项目自动化发布遇到的坑
  6. pat00-自测2. 素数对猜想 (20)
  7. Standard C Episode 1
  8. GNU make manual 翻译( 一百五十五)
  9. WSSv3 Technical Articles_Windows SharePoint Services 3.0编码开发工具和技巧(Part 2 of 2)
  10. ubuntu开机时网络图标不见了且不能上网