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. 为 Serverless Devs 插上 Terraform 的翅膀,解耦代码和基础设施,实现企业级多环境部署(下)

    简介: 在上篇<为 Serverless Devs 插上 Terraform 的翅膀,实现企业级多环境部署(上)>中,主要介绍了 Serverless Devs 多环境功能的使用,用户读完 ...

  2. ZooKeeper 在阿里巴巴的服务形态演进

    简介: 本文将给大家介绍下 ZooKeeper 的最佳实践场景,归为了 3 类,分别是:微服务领域,代表的集成产品是 Dubbo/SpringCloud:大数据领域,代表的集成产品是 Flink/Hb ...

  3. 盒马新零售基于DataWorks搭建数据中台的实践

    大家好,我叫许日花名欢伯,在2016年盒马早期的时候,我就转到了盒马的事业部作为在线数据平台的研发负责人,现在阿里云的计算平台负责DataWorks的建模引擎团队.今天的分享内容也来源于另一位嘉宾李启 ...

  4. WPF 加载诡异的字体无法布局

    如果在系统里面存在诡异的字体,同时自己的 WPF 中有一个控件尝试使用这个字体放在界面中,那么将会在界面布局过程炸了,整个控件或者整个界面布局都无法继续 本文本来是由吕水大大发布的,但是他没空写,于是 ...

  5. 设置Mysql数据库允许远程连接

    Mysql数据库用户权限设置 1.进入容器 docker exec -it mysql_test /bin/bash 注意:由于我是通过docker安装的数据库,所以在操作之前需要进入容器,直接安装在 ...

  6. Codeforces Round 932 (Div. 2) ABCD

    A. Entertainment in MAC 题意:给定字符串 \(S\),有两种操作,每次操作其中之一: 把 \(S\) 变为 \(S\) 的翻转 \(T\). 把 \(S\) 变为 \(S + ...

  7. .NET CORE 完美支持AOT 的 ORM SqlSugar 教程

    1.AOT适合产场 Aot适合工具类型的项目使用,优点禁止反编 ,第一次启动快,业务型项目或者反射多的项目不适合用AOT AOT更新记录: 实实在在经过实践的AOT ORM 5.1.4.117 +支持 ...

  8. 一键自动化博客发布工具,chrome和firfox详细配置

    blog-auto-publishing-tools博客自动发布工具现在已经可以同时支持chrome和firefox了. 很多小伙伴可能对于如何进行配置和启动不是很了解,今天带给大家一个详细的保姆教程 ...

  9. pdo类

    testmysql.php <?php require_once "./mypdo.php"; //do something... //查一行 $id = 3; //$sql ...

  10. 【OpenVINO™】在 C# 中使用OpenVINO™ 部署PP-YOLOE实现物体检测

     前言 OpenVINO C# API 是一个 OpenVINO 的 .Net wrapper,应用最新的 OpenVINO 库开发,通过 OpenVINO C API 实现 .Net 对 OpenV ...