大家好,感谢邀请,今天来为大家分享一下深入解析Java集合框架:Collection与Map基础教程(第一篇)的问题,以及和的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
Java集合类简介:
Java集合大致可以分为四个系统:Set、List、Queue和Map。 Set表示无序、不可重复的集合; List代表一个有序的、重复的集合; Map表示具有映射关系的集合。 Java 5添加了Queue系统集合,它代表了队列集合的实现。
Java集合就像一个容器,可以将多个对象(实际上是对象的引用,但通常称为对象)“扔”到容器中。自从Java 5中添加了泛型,Java集合可以记住容器中对象的数据类型,使得编码更加简洁和健壮。
Java集合和数组的区别:
1、初始化时指定了数组长度,也就是说只能保存定长数据。另一方面,集合可以保存不确定数量的数据。同时,可以保存具有映射关系的数据(即关联数组、键值对)。
2.数组元素可以是基本类型的值,也可以是对象。集合中只能保存对象(实际上只保存对象的引用变量)。基本数据类型的变量必须先转换为相应的包装类,然后才能放入集合类中。
Java集合类之间的继承关系:
Java的集合类主要派生于两个接口:Collection和Map。 Collection和Map是Java集合框架的根接口。
图中ArrayList、HashSet、LinkedList、TreeSet是我们经常使用的实现的集合类。
Map实现类用于保存具有映射关系的数据。 Map保存的每条数据都是一个键值对,它由两个值组成:key和value。 Map中的key是不可重复的,key中的每条数据都是用户ID的集合。
图中HashMap和TreeMap是我们经常使用的集合类。
Collection接口:
简介
Collection接口是Set、Queue和List的父接口。 Collection接口定义了其子类可以实现的多种方法来实现数据操作。由于方法很多,所以我偷懒,直接从JDK文档中搬来了内容。
接口中定义的方法
可见Collection的用法包括:添加元素、删除元素、返回Collection集合的数量以及清除集合等。
重点是iterator()方法,它的返回值是Iterator。
使用Iterator遍历集合元素
Iterator接口通常称为迭代器,它是Collection接口的父接口。但Iterator主要用来遍历集合中的元素。
Iterator接口中定义了两个主要方法:
下面的程序简单演示了通过Iterator对象逐一获取元素的逻辑。
公共类IteratorExample {
公共静态无效主(字符串[] args){
//创建集合并添加元素
Collectiondays=new ArrayList();
for(int i=0;i10;i++){
Day day=新一天(i,i*60,i*3600);
days.add(day);
}
//获取days集合的迭代器
迭代器iterator=days.iterator();
while(iterator.hasNext()){//判断是否有下一个元素
Day next=iterator.next();//删除该元素
//逐一遍历,获取到元素后进行后续操作
……
}
}
}注意:使用Iterator迭代集合元素时,Iterator并不是将集合元素本身传递给迭代变量,而是将集合元素的值传递给迭代变量(就像参数传递就是值传递一样,基本数据的类型传递一个值,而引用类型只传递对象的引用变量),因此修改迭代变量的值对集合元素本身没有影响。
以下程序演示了这一点:
公共类IteratorExample {
公共静态无效主(字符串[] args){
Listlist=Arrays.asList("java语言","C语言","C++语言");
迭代器迭代器=list.iterator();
while(iterator.hasNext()){
String next=iterator.next();//将集合元素的值传递给迭代器变量,只传递对象引用。保存的只是指向对象内存空间的地址。
下一个="修改";
System.out.println(下一个);
}
System.out.println(列表);
}
}输出结果如下:
修改的
修改的
修改的
[java语言、C语言、C++语言]
下面详细介绍Collection接口的Set、List、Queue这三个子接口。
Set集合
简介
Set 与Collection 基本相同,没有提供任何额外的方法。事实上,Set 就是Collection,但其行为略有不同(Set 不允许重复元素)。
Set集合不允许包含相同的元素。如果尝试将两个相同的元素添加到同一个Set 集合中,则添加操作会失败,add() 方法将返回false,并且不会添加新元素。
List集合
简介
List 集合表示元素的有序且可重复的集合。集合中的每个元素都有其对应的顺序索引。 List集合允许使用重复元素,并且可以通过索引访问指定位置的集合元素。默认情况下,List 集合按照元素添加的顺序设置元素的索引。例如,添加的第一个元素的索引为0,添加的第二个元素的索引为1……
List作为Collection接口的子接口,可以使用Collection接口中的所有方法。并且由于List是一个有序集合,所以在List集合中增加了一些基于索引操作集合元素的方法。
接口中定义的方法
void add(int index, Object element):在列表中的指定位置插入指定元素(可选操作)。
**boolean addAll(int index, Collection? extends Ec) : ** 将集合c 中的所有元素插入列表中指定位置索引处。
Object get(index):返回列表中指定位置的元素。
int indexOf(Object o):返回此列表中指定元素第一次出现的索引,如果此列表不包含该元素,则返回-1。
int lastIndexOf(Object o):返回此列表中最后一次出现的指定元素的索引,如果列表不包含此元素,则返回-1。
**Object remove(int index): ** 删除列表中指定位置的元素。
Object set(int index, Object element):将列表中指定位置的元素替换为指定元素。
**List subList(int fromIndex, int toIndex): **返回列表中指定的fromIndex(包含)和toIndex(不包含)之间的所有集合元素的子集。
Object[] toArray():返回一个数组,其中按适当的顺序(从第一个元素到最后一个元素)包含列表中的所有元素。
另外,Java 8还在List接口中添加了以下两个默认方法。
void replaceAll(UnaryOperator operator):根据运算符指定的计算规则重置List集合的所有元素。
void sort(Comparator c):根据Comparator参数对List集合的元素进行排序。
Queue集合
简介
队列用户模拟队列的数据结构。队列通常指的是“先进先出”(FIFO,先进先出)的容器。队列头是在队列中存储时间最长的元素,队列尾是在队列中存储时间最短的元素。新元素插入(offer)到队列尾部,访问元素(poll)操作返回队列头部的元素。通常,队列不允许随机访问队列中的元素。
接口中定义的方法
Map集合
简介
地图用户以映射关系保存数据,因此地图集合中保存了两组数字。一组值用户将键保存在Map中,另一组值用户将值和键保存在Map中。 value 可以是任何引用类型的数据。 Map 键不允许重复,即同一个Map 对象的任意两个键与equals 方法比较时总是返回false。
如下图所示,key和value之间是一种单向的一对一的关系,即通过指定的key总能找到唯一且确定的value。从Map中检索数据时,只要给出指定的key,就可以检索到对应的value。
Map集合与Set集合、List集合的关系
1.与Set集合的关系如果将Map 中的所有键放在一起查看,它们形成一个Set(所有键没有顺序,并且键不能重复)。事实上,Map确实包含一个keySet()方法,用户返回一个由Map中所有键组成的Set。
2.与List集合的关系如果把Map中的所有值放在一起看,它们很像一个List:元素可以重复,并且可以根据索引来查找每个元素,但是Map中的索引不再使用整数值。但使用另一个对象作为索引。
接口中定义的方法
Map还包含一个内部类Entry,它封装了一个键值对。入口包含以下三个方法:
Map集合最典型的用法是成对添加和删除键值对,然后判断Map中是否包含指定的key以及是否包含指定的value。还可以通过Map提供的keySet()方法获取所有键的集合。然后用foreach循环遍历Map的所有key,根据key就可以遍历到所有的value了。下面的程序代码演示了Map的一些基本功能:
公共类地图测试{
公共静态无效主(字符串[] args){
天day1=新的一天(1, 2, 3);
天day2=新的一天(2, 3, 4);
Mapmap=new HashMap();
//将键值对成对放置
map.put("第一", day1);
map.put("第二", day2);
//判断是否包含指定的key
System.out.println(map.containsKey("第一个"));
//判断是否包含指定值
System.out.println(map.containsValue(day1));
//循环遍历
//1.获取Map中所有key组成的set集合
SetkeySet=map.keySet();
//2.使用foreach进行遍历
for (字符串键: keySet) {
//根据key获取指定的value
System.out.println(map.get(key));
}
//根据key删除键值对
地图.删除("第一个");
System.out.println(map);
}
}输出结果:
真的
真的
日[小时=2,分钟=3,秒=4]
日[小时=1,分钟=2,秒=3]
{秒=天[小时=2,分钟=3,秒=4]}
以上就是对Java集合框架的总结。通过本文,您可以了解Java集合中复杂的关系,同时掌握操作集合的一些基本概念和方法。
后续文章将深入了解Java集合中的具体实现类。如果有兴趣可以观看后续内容,进一步了解Java集合的内容。
关于本次深入解析Java集合框架:Collection与Map基础教程(第一篇)和的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。
【深入解析Java集合框架:Collection与Map基础教程(第一篇)】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
这篇文章讲了Java集合的基本知识吗?我之前学过一些,想去深入了解下。
有8位网友表示赞同!
想要学习Java编程,集合框架是必备的啊!这篇文章正好合适我现在的需求。
有14位网友表示赞同!
Collection 和 Map 是 Java 集合里最重要的两个概念吧?希望能详细讲解一下它们的用途和区别。
有5位网友表示赞同!
我对 "由浅入深" 一词挺感兴趣的,应该是会先讲解一些基础知识,然后逐渐深入了解更复杂的方面吧?
有6位网友表示赞同!
学习Java的时候,总是觉得集合框架是比较难懂的部分,希望这篇文章能给我一些启发。
有6位网友表示赞同!
感觉学习编程语言,数据结构和算法都是很重要的部分,理解 Java 集合应该有助于我写更好的代码。
有12位网友表示赞同!
我是 Java 新手,希望能通过这篇文章系统地了解 Java 集合的基本框架。
有20位网友表示赞同!
之前看Java教程的时候,对集合类的用法不太清楚,这篇文章刚好可以帮到我!
有18位网友表示赞同!
学习 Java 集合,能让我更灵活的操作数据,做开发的时候会更方便吧?
有20位网友表示赞同!
这篇文章会不会讲解一些常用的实现类,比如 ArrayList, HashMap 之类呢?
有9位网友表示赞同!
Java 的集合框架真是太好用了!希望这篇文章能让我更好地掌握这些工具的使用方法。
有12位网友表示赞同!
我想要学习一下 Java 开发,这篇文章会不会讲到一些实际应用场景?
有12位网友表示赞同!
这篇文章能深入讲解 Collection 和 Map 的使用案例吗?给我一些实际的代码示例吧!
有8位网友表示赞同!
我比较好奇 Java 集合和其他语言的集合有什么区别?这篇文章会不会进行对比?
有8位网友表示赞同!
想要写高性能的代码,对 Java 集合要有更深层的理解,期待这篇文章能让我受益匪浅!
有19位网友表示赞同!
学习 Java 集合的同时,我也要关注一些其背后的算法原理。这篇文章会讲到这些吗?
有19位网友表示赞同!
Java 的集合框架真是很强大!我能通过这篇文章了解一下它的应用范围和局限性吗?
有13位网友表示赞同!
我之前接触过一些 Java 中的接口,像 Iterable, Comparator 之类,这篇文章会不会讲解它们的用法?
有9位网友表示赞同!
学习Java需要一步步积累经验,希望能从这篇文章开始系统的梳理 Java 集合的知识体系。
有12位网友表示赞同!