1.集合概述

集合:集合是java中提供的一种容器,可以用来存储多个数据。

集合与数组的区别:

(1)数组的长度是固定的,集合的长度是可变的。

(2)数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。

2.集合分类

集合按照其存储结构可以分为两大类

(1)单列集合java.util.Collection

(2)双列集合java.util.Map

3.单列集合java.util.Collection

框架

List的特点是元素有序、元素可重复。

Set的特点是元素无序,而且不可重复

(1)Collection是所有单列集合的父接口,因此在Collection中定义了单列集合(List和Set)通用的一些方法,这些方法可用于操作所有的单列集合。方法如下:

  • public boolean add(E e): 把给定的对象添加到当前集合中 。
  • public void clear() :清空集合中所有的元素。
  • public boolean remove(E e): 把给定的对象在当前集合中删除。
  • public boolean contains(E e): 判断当前集合中是否包含给定的对象。
  • public boolean isEmpty(): 判断当前集合是否为空。
  • public int size(): 返回集合中元素的个数。
  • public Object[] toArray(): 把集合中的元素,存储到数组中。

(2)List接口介绍

List接口的特点:

1. 它是一个元素存取有序的集合。
2. 它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素
3. 集合中可以有重复的元素,通过元素的 equals 方法,来比较是否为重复的元素。
 
List接口的特有方法:
public void add(int index, E element) : 将指定的元素,添加到该集合中的指定位置上。
public E get(int index) : 返回集合中指定位置的元素。
public E remove(int index) : 移除列表中指定位置的元素 , 返回的是被移除的元素。
public E set(int index, E element) : 用指定元素替换集合中指定位置的元素 , 返回值的更新前的元素。
 
List接口的子类:
ArrayList: 集合数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中使用最多的功能为 查询数据、遍历数据,所以 ArrayList 是最常用的集合。
LinkedList: 集合数据存储的结构是链表结构( 双向链表 )。方便元素添加、删除的集合。
LinkedList特有方法:

public void addFirst(E e) : 将指定元素插入此列表的开头。
public void addLast(E e) : 将指定元素添加到此列表的结尾。
public E getFirst() : 返回此列表的第一个元素。
public E getLast() : 返回此列表的最后一个元素。
public E removeFirst() : 移除并返回此列表的第一个元素。
public E removeLast() : 移除并返回此列表的最后一个元素。
public E pop() : 从此列表所表示的堆栈处弹出一个元素。
public void push(E e) : 将元素推入此列表所表示的堆栈。
public boolean isEmpty() :如果列表不包含元素,则返回 true 。

(3)Set接口介绍

与 List 接口不同, Set 接口中元素无序,并且都会以某种规则保证存入的元素不出现重复。
 
常用子类:
java.util.HashSet
在jdk1.8 之前,哈希表底层采用数组 + 链表实现,即使用链表处理冲突,同一 hash 值的链表都存储在一个链表里。
但是当位于一个桶中的元素较多,即 hash 值相等的元素较多时,通过 key 值依次查找的效率较低。而 JDK1.8 中,哈
希表存储采用数组 + 链表 + 红黑树实现,当链表长度超过阈值( 8 )时,将链表转换为红黑树,这样大大减少了查找
时间。
简单的来说,哈希表是由数组 + 链表 + 红黑树( JDK1.8 增加了红黑树部分)实现的
java.util.LinkedHashSet
 
它是链表和哈希表组合的一个数据存储结构。可以保证元素存放的顺序
 

Java中的Collection集合(单列集合)的更多相关文章

  1. java中Comparator的用法 -- 实现集合和数组排序

    在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标. 接下来我们模拟下在集合对象中对日期属性进行排序 一.实体类Step package com.l ...

  2. java之List接口(单列集合)

    List接口概述 查询API我们可知:java.util.List 接口继承自 Collection 接口,是单列集合的一个重要分支,习惯性地会将实现了 List 接口的对 象称为List集合.在Li ...

  3. java中的最重要的 集合框架

    java.util这个重要的包包含大量的类和接口,支持很多的功能.例如,java.util具有能产生伪随机数的类,还包括可以管理日期和时间.观察事件.操作位集合.标记字符串.处理格式化数据等的类.ja ...

  4. java之Set接口(单列集合)

    Set接口概述 java.util.Set 接口和 java.util.List 接口一样,同样继承自 Collection 接口,它与 Collection 接口中的方法基本一致,并没有对 Coll ...

  5. java 中的Collection

    /* *一. Collection?-------->容器! * * 1.来源于java.util包 非常实用的数据结构! * *二. 方法? * * void clear()删除集合中所有元素 ...

  6. JAVA 中的 Collection 和 Map 以及相关派生类的概念

    JAVA中Collection接口和Map接口的主要实现类   Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的 ...

  7. java中的collection小结

    Collection 来源于Java.util包,是非常实用常用的数据结构!!!!!字面意思就是容器.具体的继承实现关系如下图,先整体有个印象,再依次介绍各个部分的方法,注意事项,以及应用场景.   ...

  8. [原创]Java中字符串、数组、集合及JSONArray的长度属性

    前言:数组没有length()这个方法,有length的属性.String有有length()这个方法. 1.String字符串 String str = "abcdefg";st ...

  9. java中Collections.sort()方法实现集合排序

    1.Integer/String泛型的List进行排序 List <Integer> integerlist = new ArrayList<Integer>();   //定 ...

  10. java中拼接两个对象集合

    目标:  根据两个list中每条记录的某个属性是否相同来拼接. 1.首先定义一个字符串 String str = "[{\"ITEMID\":2,\"ITEMN ...

随机推荐

  1. 疫情带火了这款APP:2600个学生一天点赞70万次

      这几天,全国中小学生经历了"过山车"一样的心情. 因为疫情的不断蔓延,1月27日,教育部下发通知,2020年春季学期延期开学. 随后,教育部又提出"利用网络平台,停课 ...

  2. 基于信通院 Serverless 工具链模型的实践:Serverless Devs

    简介: Serverless Devs 作为开源开放的开发者工具,参编中国信通院<基于无服务器架构的工具链能力要求>标准,为行业统一规范发挥助推作用!​ 作者 | 江昱(阿里云 Serve ...

  3. 千万商家的智能决策引擎--AnalyticDB如何助力生意参谋双十一

    作者:算法&健兮,阿里巴巴数据技术及产品部技术专家 生意参谋介绍 生意参谋是阿里官方打造的全渠道.全链路.一站式数据平台,致力于为用户提供经营分析.市场洞察.客群洞察等多样化数据服务,帮助用户 ...

  4. dotnet 将控制台 Console.WriteLine 内容输出到文件

    很多伙伴喜欢使用 Console.WriteLine 打日志,也许是打起来顺手.打完了之后,又想着,要是能够输出到本机文件那就更好了.既然很多伙伴都有这个想法,那 dotnet 自然就是有方便的方法让 ...

  5. 和 ChatGPT 聊聊 .NET 编译和执行背后的那些事儿

    1 .NET 编译.构建.执行涉及到哪些概念 在 .NET 编译.构建和执行中,涉及到以下概念: C# 或 Visual Basic .NET 等编程语言: 这些是 .NET Framework 使用 ...

  6. SonarQube+Maven+SonarQube Scanner

    1.SonarQube简介 官方网站地址:https://www.sonarqube.org/ SonrQube是一个开源的代码质量管理系统,用于检测代码中的错误,漏洞和代码规范.它可以以现有的Git ...

  7. WebGL实现简易的局部“马赛克”

    前言 接触过Canvas的小伙伴应该都知道,在Canvas2D中我们要加载一个图片很简单,通过调用drawImage API就能将图像绘制到画布上,当然在WebGL中我们也可以绘制图像,在绘制时我们需 ...

  8. Java ”框架 = 注解 + 反射 + 设计模式“ 之 反射详解

    Java "框架 = 注解 + 反射 + 设计模式" 之 反射详解 每博一文案 无论幸福还是苦难,无论光荣还是屈辱,你都要自己遭遇与承受. ------ <平凡的世界> ...

  9. gorm 如何对字段进行comment注释?

    type User struct { Model Name string `gorm:"type:char(30);comment:'姓名'"` }

  10. C语言:计算长方形面积问题

    #include <stdio.h> #include <stdlib.h> /* run this program using the console pauser or a ...