JAVA集合框架Collection接口和Map接口主要知识总结



Java集合框架下有两个重要的接口,一个是Collection接口,一个是Map接口。

一、Collection接口

Collection接口中又有三个子接口,分别是List(序列)Queue(队列)Set(), 其中常用的有ListSet

ListQueue集合中元素是有序的并且是可以重复的,而Set集合中元素是无序且不可重复的;

List接口中有两个常见的实现类,分别是ArrayList实现类和LinkedList实现类,而LinkedList同时也是Queue的实现类,Set接口的实现类是HashSet

ArrayList实现类中提供了许多方法用来对List集合元素实现增删改查的目的。(HashSet实现类的方法与ArrayList类似,这里以ArrayList为例简要介绍)

以学生选课为例:(简写代码)

首先定义一个Course类:

public class Course;

再定义一个List集合,用以盛装Course类型的对象

public List<Course> CoursesToSelect;

<>里面的内容是泛型,表明集合中存储的元素是该类型,本例中的泛型就是Course类型的;

ArrayList中的addaddAll方法都可以往集合中添加元素

Course cr1 = new Course("1", "大学英语");

CoursesToSelect.add(cr1);

Course cr2 = new Course("2", "大学物理");

CoursesToSelect.add(0, cr2);0是所要添加元素的索引位置

Course[] course = { new Course("3", "高等数学"), new Course("3", "离散数学") };

CoursesToSelect.addAll(Arrays.asList(course));

 

ArrayList中的RemoveRemoveAll方法都可以实现删除集合中的元素

 

public void testRemove() {

Course cr = CoursesToSelect.get(1);

CoursesToSelect.remove(cr);

}

 

public void testRemoveAll() {

Course[] cr = { (Course) CoursesToSelect.get(1), (Course) CoursesToSelect.get(2) };

CoursesToSelect.removeAll(Arrays.asList(cr));

}

ArrayList中的set方法可以修改集合中的元素

public void testModify() {

CoursesToSelect.set(2, new Course("4", "毛概"));

}

 

ArrayList中可以有多种方法可以查询集合中的所有元素

 

<方法1>public void testshow() {

int size = CoursesToSelect.size();

System.out.println("有如下课程备选:");

for (int i = 0; i < size; i++) {

Course temp1 = CoursesToSelect.get(i);

System.out.println(temp1.getId() + ":" + temp1.getName());

}

}

 

/**

 * 通过迭代器访问CoursesToSelect Iterator实际上是一个接口

 */

<方法2>public void testIterator() {

Iterator<Course> it = CoursesToSelect.iterator();

System.out.println("通过迭代器访问:");

while (it.hasNext()) {

Course cr =  it.next();

System.out.println(cr.getId() + ":" + cr.getName());

}

}

/**

 * 通过ForEach遍历集合元素

 */

<方法3>public void testforeach() {

System.out.println("通过foreach访问");

for (Course obj : CoursesToSelect) {

System.out.println(obj.getId() + ":" + obj.getName());

}

}

  <方法4>public void testListContains() {

  Course course=CoursesToSelect.get(0);

  System.out.println("已经取得课程:"+course.getName());

  System.out.println("备选课程中是否包含课程"+course.getName()+","+CoursesToSelect.contains(course));

二、Map接口

Map接口的实现类是HashMap,它里面的元素(无序排列)Entry类型的对象实例,也就是键值对<key,value>,类似与数学函数里的映射关系。元素的key值是不可以重复的,一个key值对应一个value值,但是一个value值可以对应多个Key值。

首先定义一个学生类:

public class Student

再定义一个Map集合,用以盛装Student类型的对象:

public Map<String,Student> students;

HashSet中的put方法可以实现往集合中添加元素

 

    students.put(stuId, student);

HashSet中的Remove方法可以实现删除集合中的元素

students.remove(ID);

HashSet中的put方法可以修改集合中的元素

public void testModify(){

while(true){

System.out.println("请输入要修改的学生ID");

String ID=scan.next();

Student st=students.get(ID);

if(st!=null){

System.out.println("请输入要修改的学生姓名:");

String name=scan.next();

Student newStudent=new Student(ID,name);

students.put(ID, newStudent);

break;

}

else{

System.out.println("该学生ID不存在,请重新输入!");

continue;

}

}

}

HashSet中可以有多种方法可以查询集合中的所有元素

<方法1>public void testkeySet(){

Set<String>keySet=students.keySet();

System.out.println("已添加"+students.size()+"学生:");

for(String stuid:keySet){

Student st=students.get(stuid);

if(st!=null){

System.out.println("学生:"+st.getName());

}

}

}

<方法2>public void testEntrySet(){

Set<Entry<String, Student>> entrySet=students.entrySet();

for(Entry<String, Student> entry:entrySet){

System.out.println("取得键:"+entry.getKey());

System.out.println("对应的值:"+entry.getValue().getName());

}

}

    对某个序列进行排序,那么这个序列中的元素必须实现Comparable接口,Comparable接口采用的是默认的比较规则,其实现类必须实现compareTo()方法,而Comparator接口采用的是临时的比较规则,其实现类必须实现compare()方法。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值