集合】【Java基础】Java集合框架用来做什么

2020-11-20 18:14发布

5条回答
信阳彭于晏
2楼 · 2020-11-20 19:35

Java集合框架为程序员提供了预先包装的数据结构和算法来操纵他们。

集合是一个对象,可容纳其他对象的引用。集合接口声明对每一种类型的集合可以执行的操作。

集合框架的类和接口均在java.util包中。

任何对象加入集合类后,自动转变为Object类型,所以在取出的时候,需要进行强制类型转换。


kitidog2016
3楼 · 2020-11-21 09:12

 从架构的方面来理解,可能稍微容易一点.
在编程中,需要管理很多对象集.比如某班全部同学,某个公司所有人员资料等.
要管理这些资料,java必须提供某种数据结构支持.
由于时间,空间,安全的考虑,有各种不同的实现.比如ArrayList,vector.hashmap,linklist,treemap,hashset等多种实现.
为了屏蔽实现差异,java提供了一个Collection(集合)接口,规定必须实现一些公用的方法.
比如 add.remove,size等等这样,不管底层如何实现,我都知道他们至少拥有上面方法.
一句话java集合就是提供一组通用接口的,管理大量数据的数据结构实现.

我想吃肉
4楼 · 2020-11-23 09:00

集合可以看作是一种容器,用来存储对象信息。所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下。

  数组与集合的区别如下:

  1)数组长度不可变化而且无法保存具有映射关系的数据;集合类用于保存数量不确定的数据,以及保存具有映射关系的数据。

  2)数组元素既可以是基本类型的值,也可以是对象;集合只能保存对象。

  Java集合类主要由两个根接口CollectionMap派生出来的,Collection派生出了三个子接口:List、Set、Queue(Java5新增的队列),因此Java集合大致也可分成List、Set、Queue、Map四种接口体系,(注意:Map不是Collection的子接口)。

  其中List代表了有序可重复集合,可直接根据元素的索引来访问;Set代表无序不可重复集合,只能根据元素本身来访问;Queue是队列集合;Map代表的是存储key-value对的集合,可根据元素的key来访问value。

  上图中淡绿色背景覆盖的是集合体系中常用的实现类,分别是ArrayList、LinkedList、ArrayQueue、HashSet、TreeSet、HashMap、TreeMap等实现类。


集合用来存储不同类型的对象(基本数据类型除外),存储长度可变。
Java集合中实际存放的只是对象的引用,每个集合元素都是一个引用变量,实际内容都放在堆内存或者方法区里面,但是基本数据类型是在栈内存上分配空间的,栈上的数据随时就会被收回。

yuixan
6楼 · 2020-11-27 15:11

什么是集合框架呢?

集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。接口:即表示集合的抽象数据类型。

接口提供了让我们对集合中所表示的内容进行单独操作的可能。

实现:也就是集合框架中接口的具体实现。实际它们就是那些可复用的数据结构。算法:在一个实现了某个集合框架中的接口的对象身上完成某种有用的计算的方法,例如查找、排序等。这些算法通常是多态的,因为相同的方法可以在同一个接口被多个类实现时有不同的表现。

事实上,算法是可复用的函数。如果你学过C++,那C++中的标准模版库(STL)你应该不陌生,它是众所周知的集合框架的绝好例子。


相关问题推荐

  • 回答 5

    Java提供的众多集合类由两大接口衍生而来:Collection(单列集合)接口和Map(双列集合)接口一 、Collection接口Collection接口定义了一个包含一批对象的集合。接口的主要方法包括:size() - 集合内的对象数量add(E)/addAll(Collection) - 向集合内添加单个/批...

  • 回答 5

    集合的话,分单列集合和双列集合,单列集合的话就是Collection接口,下面有两个子接口:Set和List。其中呢Set集合是一个不可有重复元素的无序集合;List是一个有序的集合,可以包含重复元素并且提供了按索引访问的方式。双列集合的话就是Map接口,它的实现类...

  • 回答 6

    list元素可重复,set元素唯一,map存储键值对。ArrayList实现原理是数组,是非线程安全的,同样效果线程安全使用vector。LinkedList实现原理是链表,是非线程安全的,线程安全使用ConcurrentLinkedQueue。HashSet实现原理是哈希表,元素是无序的。TreeSet实现...

  • 回答 3

    list元素可重复,set元素唯一,map存储键值对。ArrayList实现原理是数组,是非线程安全的,同样效果线程安全使用vector。LinkedList实现原理是链表,是非线程安全的,线程安全使用ConcurrentLinkedQueue。HashSet实现原理是哈希表,元素是无序的。TreeSet实现...

  • 回答 11

    Java中的集合主要分为四类:1、List列表:有序的,可重复的;2、Queue队列:有序,可重复的;3、Set集合:不可重复;4、Map映射:无序,键唯一,值不唯一。

  • 回答 6

    /** * 使用Lambda表达式实现过滤统计 */ public void countListItemNum(List list) {// 使用Map存储List中每个元素的数量:// key:元素   value:数量 Map result = new HashMap(); list.forEach(item->{ long count = list.stream().filter......

  • 回答 7
    已采纳

    里氏代换原则(Liskov Substitution Principle, LSP):所有引用基类(父类)的地方必须能透明地使用其子类的对象里氏代换原则告诉我们,在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一...

  • 回答 8
    已采纳

    心里有个预期,然后看看是以什么目的进这家企业工作,要是赚钱的话,那就多要点,要是学习的话,可以根据情况要一个能养活自己的价格。

  • 回答 4
    已采纳

    Java中有八种数据类型,基础数据类型分别是:byte,short,int,long,float,double,char,boolean,引用数据类型分别是:数组,类和接口。方法传参的时候我们有两种,一种是形式参数(定义方法时写的参数),一种是实际参数(调用方法时给的具体值)。首先...

  • 回答 15
    已采纳

    现在的架构很多,各种各样的,如高并发架构、异地多活架构、容器化架构、微服务架构、高可用架构、弹性化架构等,还有和这些架构相关的管理型的技术方法,如 DevOps、应用监控、自动化运维、SOA 服务治理、去 IOE 等等,还有很多。分布式架构其实就是分布式系...

  • 回答 10

    1、监控GC的状态使用各种JVM工具,查看当前日志,分析JVM参数的设置,分析堆内存快照和GC日志,根据实际的各区域的内存划分和GC的执行时间,判断是否需要进行优化2、分析结果、判断是否需要优化如果各项参数设置合理,系统没有超时的日志出现,GC频率也不高,...

  • 回答 6

    MyBatis 每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。 如果想覆盖对象工厂的默认行为,则可以...

  • 回答 6

    学vue应该要先学习javascript 的基础知识和用法。

  • 回答 8

    1、lambda是jdk8的新特性2、使用lambda的前提,必须是一个接口,接口只能有一个抽象方法3、Lambda 表达式的简单例子:// 1. 不需要参数,返回值为 5  () -> 5    // 2. 接收一个参数(数字类型),返回其2倍的值  x -> 2 * x    // 3. 接受2个参数(数...

没有解决我的问题,去提问