collection

集合体系
  • 数据结构栈和队列
    栈结构 :先进后出
    队列结构 :先进先出
  • 数据结构之数组和链表
    数组结构:查询快、增删慢
    队列结构 :查询慢、增删快
  • List集合概述
    有序集合(也称为序列),用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引访问元素,并搜索列表中的元素;
    与Set集合不同,列表通常允许重复的元素;
  • List集合特点
    有索引;
    可以存储重复元素;
    元素存取有序 ;
collection体系

list

q:集合中存放的是什么类型?

引用类型  存的不是对象,而是对象的引用类型,存入int型的也会自动装配成integer

q:ArrayList和linkedList区别?

ArrayList特点:结构实现,查询慢、增删快

linkedList特点: 底层是链表结构实现,查询慢、增删快

set

  • hashSet集合的特点
    元素存取无序
    没有索引、只能通过迭代器或增强for循环遍历,不能存储重复元素

    哈希值 :是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值
hashSet唯一性保证原理
  • TreeSet集合概述
    元素有序,可以按照一定的规则进行排序,具体排序方式取决于构造方法
    TreeSet():根据其元素的自然排序进行排序
    TreeSet(Comparator comparator) :根据指定的比较器进行排序
    没有带索引的方法,所以不能使用普通for循环遍历
    由于是Set集合,所以不包含重复元素的集合

Q: hashset 和Treeset 的区别是?

hashset 基于哈希表实现,无序,不重,可以放入一个null值

treeset 基于二叉树实现,有序,不重, 不允许为空

Q:HashSet是如何保证元素唯一性的呢?

是通过元素的两个方法,hashCode和equals来完成。

Q:TreeSet是如何保证元素唯一性的呢?

底层数据结构是二叉树,使用二叉树的compareTo方法return 0.

Q:Comparable和Comparator区别?

Comparator位于包java.util下需要元素对象实现Comparable接口,覆盖compareTo方法

Comparable位于包   java.lang下Comparable,需要元素对象实现Comparable接口,覆盖compareTo方法。

Q:List、Map、Set三个接口,存取元素时,各有什么特点?

List  以特定次序来持有元素,可有重复元素;

Set  无法拥有重复元素,内部排序(无序);

Map 保存key-value值,value可多值。

map

map体系
  • Map集合概述

interface Map<K,V> K:键的类型;V:值的类型

  • Map集合的特点
    键值对映射关系
    一个键对应一个值
    键不能重复,值可以重复
    元素存取无序

Q: HashMap和Hashtable的区别?

Hashtable是线程安全的 不可以存入null键null值

HashMap线程不安全  可以存入null键null值

java 集合特性面试必备的更多相关文章

  1. 【转】Java集合框架面试问题集锦

    Java集合框架(例如基本的数据结构)里包含了最常见的Java常见面试问题.很好地理解集合框架,可以帮助你理解和利用Java的一些高级特性.下面是面试Java核心技术的一些很实用的问题. Q:最常见的 ...

  2. 基础篇:JAVA集合,面试专用

    没啥好说的,在座的各位都是靓仔 List 数组 Vector 向量 Stack 栈 Map 映射字典 Set 集合 Queue 队列 Deque 双向队列 关注公众号,一起交流,微信搜一搜: 潜行前行 ...

  3. Java集合框架面试题目

    1.为什么Map接口不继承Collection 接口? Set是无序集合,并且不允许重复的元素 List是有序的集合,并且允许重复的元素 而Map是键值对 它被视为是键的set和值的set的组合 Ma ...

  4. Java集合框架 面试问题整理

    简介 java集合类是java.util 包中的重要内容.java集合框架包含了大量集合接口以及这些接口的实现类和操作他们的算法. java集合框架图 主要提供的数据结构 List 又称有序的Coll ...

  5. Java程序员面试必备:Volatile全方位解析

    前言 volatile是Java程序员必备的基础,也是面试官非常喜欢问的一个话题,本文跟大家一起开启vlatile学习之旅,如果有不正确的地方,也麻烦大家指出哈,一起相互学习~ 1.volatile的 ...

  6. Python/Java程序员面试必备常用问题解析与答案

    转自AI算法联盟,理解python技术问题,以及一些常见的java面试中经常遇到的问题,这些面试问题分为四类: 是什么(what) 如何做(how) 说区别/谈优势(difference) 实践操作( ...

  7. java集合框架面试要点整理

  8. 【新手向】如何学习Java集合

    前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 如果认识我的同学可能就知道,我已经写过很多系列级 ...

  9. Java提高班(四)面试必备—你不知道的数据集合

    导读:Map竟然不属于Java集合框架的子集?队列也和List一样属于集合的三大子集之一?更有队列的正确使用姿势,一起来看吧! Java中的集合通常指的是Collection下的三个集合框架List. ...

随机推荐

  1. 一文读懂Spring动态配置多数据源---源码详细分析

    Spring动态多数据源源码分析及解读 一.为什么要研究Spring动态多数据源 ​ 期初,最开始的原因是:想将答题服务中发送主观题答题数据给批改中间件这块抽象出来, 但这块主要使用的是mq消息的方式 ...

  2. 04.委托Delegation

    1. 基本了解 1.1 委托简述 官方文档 委托是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用,用于将方法作为参数传递给其他方法,可将任何可访问类或结构中与委托类型匹配的任何方法分配给委 ...

  3. C++ 继承方式 //语法:class 子类 :继承方式 父类 //继承方式 三种: //1.公共继承 //2.保护继承 //3.私有继承

    1 //继承方式 2 //语法:class 子类 :继承方式 父类 3 //继承方式 三种: 4 //1.公共继承 5 //2.保护继承 6 //3.私有继承 7 8 #include <ios ...

  4. C语言运算符(关系运算符)+(逻辑运算符)

    下表显示了 C 语言支持的所有关系运算符.假设变量 A 的值为 10,变量 B 的值为 20,则: 实列: 1 #include <stdio.h> 2 3 int main() 4 { ...

  5. VGG Net 论文细读

    论文地址:<Very Deep Convolutional Networks for Large-Scale Image Recognition> 一.背景 LSVRC:大规模图像识别挑战 ...

  6. [TensorFlow2.0]-Fashion-MNIST本地数据集及fit_generator()的使用

    本人人工智能初学者,现在在学习TensorFlow2.0,对一些学习内容做一下笔记.笔记中,有些内容理解可能较为肤浅.有偏差等,各位在阅读时如有发现问题,请评论或者邮箱(右侧边栏有邮箱地址)提醒. 若 ...

  7. Deepin Pwn环境的配置

    要学习Pwn  Pwn环境那是必不可少滴! 我是新手,我也弄了好久,这里把经验分享给大家!这里感谢I春秋的"知世"老师的脚本!虽然写的不是很完美.还得我自己动手修改!PS:http ...

  8. 跟我一起写 Makefile(八)

    六.多行变量   还有一种设置变量值的方法是使用define关键字.使用define关键字设置变量的值可以有换行,这有利于定义一系列的命令(前面我们讲过"命令包"的技术就是利用这个 ...

  9. MyBatis学习06(动态SQL和缓存)

    10.动态SQL 10.1 什么是动态SQL 动态SQL指的是根据不同的查询条件 , 生成不同的Sql语句. 官网描述: MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或 ...

  10. iOS-block循环引用详解和应用

    Block循环引用 什么情况下block会造成循环引用 ARC 情况下 block为了保证代码块内部对象不被提前释放,会对block中的对象进行强引用,就相当于持有了其中的对象,而如果此时block中 ...