集合小总结

集合总结:

集合类总结:
所属包:java.util.*

顶层接口:

注意:这里的有序与无序仅仅是针对进出顺序的不同,即进入集合的顺序与从集合读取的顺序是否一致,一致则为有序,不一致为无序

Collection:
  List (有序,可重复):
    ArrayList: 底层数据结构为数组,查询快,增删慢
          线程不安全,效率高 (替代Vector)

    Vector: 底层数据结构为数组,查询快,增删慢
      线程安全,效率地

    LinkedList: 底层数据结构为链表,查询慢,增删快
      线程不安全,效率高

  Set (无序,唯一,通过部分接口的实现,能达到有序的部分,入LinkedHashSet):
    HashSet: 底层数据结构哈希表(链表数组),为 HashMap 的Key 部分,哈希表通过维护hasCode()和equal()来维护Key的唯一不重复特性

       LinkedHashSet: HashSet的子类,数据结构除哈希表以外,还有一个双向维护链表,特点:有序,唯一

    TreeSet: 底层数据结构为红黑树(自平衡二叉树),为TreeMap的Key部分,该二叉树有两种排序方式:1.自然排序(通过让需要排序比较的具体类实现Comparable<E>接口) 2.比较器排序(通过带有需要传入Comparator接口的构造方法,写入比较器来实现比较形式:1.通过继承Comparator接口的实体类实现;2.通过匿名内部类在构造器下把比较方法复写即可)

Map: (键唯一,无序,一个键映射一个值)
    HashMap:  基于哈希表的 Map 接口的实现,提供所有可选的映射操作,并允许使用 null 值和 null 键。希表通过维护hasCode()和equal()来维护Key的唯一不重复特性。

    TreeMap:  拥有自然排序,二叉树通用特点,底层数据结构为红黑树(自平衡二叉树),该二叉树有两种排序方式:1.自然排序(通过让需要排序比较的具体类实现Comparable<E>接口) 2.比较器排序(通过带有需要传入Comparator接口的构造方法,写入比较器来实现比较形式:1.通过继承Comparator接口的实体类实现;2.通过匿名内部类在构造器下把比较方法复写即可)

提问:Hashtable 与 HashMap 的区别?
  Hashtable:线程安全,效率低,不允许null键和null值。
  HashMap :线程不安全,效率高,允许null键和null值。(官方推出HashMap就是为了取代Hashtable)

Collections :集合工具类
Arrays :数组工具类

------------------------------------------------------------------

面试题:

Collection  :是单列集合的顶层接口,有子接口List与Set

Collections:是针对集合操作的工具类,有对集合进行排序和二分查找的方法

-------------------------------------------------------------------

Iterator:Collection接口通用迭代器(适用于List与Set的迭代)
ListIterator:List接口通用迭代器,提供了可回滚的方法(仅仅适用于List迭代)

Collection遍历方式:
  1.迭代器迭代:Collection集合可以
  2.增强for:Collection集合可以,编译后其实是迭代器,通过反编译就能看到
  3.普通for:List集合可以,但是Set集合由于无序,没有索引,故没有普通for的遍历方式

Map的遍历:
  1:根据键找值:获取所有键的集合,遍历键的集合,获取到每一个键,根据键找值
  2:根据键值对对象找键和值:获取所有键值对对象的集合遍历键值对对象的集合,获取到每一个键值对对象根据键值对对象找键和值

Map特有接口:
  1.Comparable :此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。
  2.Comparator :强行对某个对象 collection 进行整体排序 的比较函数。可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现精确控制。

时间: 2024-08-07 17:02:13

集合小总结的相关文章

集合小案例

LinkHash**特性:唯一和有序 由[哈希表]保证[键]的唯一性,由[链表]保证[键]的有序性(存储和取出的顺序一致) [LinkHashSet]和[LinkHashMap key]的特性是完全一样的! public class Test {     public static void main(String[] args) {         LinkedHashMap<Person, String> linkedHashMap = new LinkedHashMap<Perso

泛型集合小项目员工打卡

项目样式 需求说明:1.实现新增员工 2.使用DataGrideView空间展示员工信息 3.实现删除员工信息 4.给主窗体添加右键菜单,实现上班签到和下班签退 5.选择签到,必须检索员工打卡记录,如果已签到,提示不能再签到 6.选择签退,必须检索员工打卡记录,如果已签退,提示不能再签退 7.使用DataGrideView控件显示员工考勤记录 项目开始: 首先搭好窗体,创建员工类 SE 打卡时间类 public class SE { public int id{ get; set; } //存储

C#ArrayList集合——小例题

用两种方法编写题目:输入姓名,语文分数,数学分数,英语分数到集合,求语文总分,数学平均分,英语最高分以及英语最高分是谁.法一:一个集合的做法 Console.Write("输入总人数:"); int s = int.Parse(Console.ReadLine()); ArrayList ss = new ArrayList(); for (int i = 0; i < s; i++) { Console.Write("第" + (i + 1) + "

集合小练

//输入姓名,语文分数,数学分数,英语分数到集合 //求语文总分,数学平均分,英语最高分以及英语最高分是谁 // Console.Write("请输入人数:"); // int n = int.Parse(Console.ReadLine()); // ArrayList name = new ArrayList(); // ArrayList yuwen = new ArrayList(); // ArrayList shuxue = new ArrayList(); // Arra

java集合小总结

8 集合 用于存储对象,长度可变,可以存储不同类型的对象 8.1 集合框架 Collection List ArrayList:底层的数据结构使用的是数组结构.特点:查询速度快,增删慢.线程不同步 LinkedList:底层的数据结构使用的是链表数据结构.特点:查询慢,增删快.线程不同步 Vector:底层的数据结构使用的是数组数据结构.线程同步,被ArrayList替代了. Set HashSet:底层的数据结构使用的是哈希表,线程不同步. TreeSet:底层的数据结构使用的是二叉树,可以对

java 集合小练习 超市库存管理系统

1 package Demo02; 2 3 public class chaoshi { 4 int id; 5 String name; 6 double price; 7 } 1 package Demo02; 2 import java.util.ArrayList; 3 import java.util.Scanner; 4 public class test { 5 public static void main(String[] args) { 6 ArrayList<chaoshi

【Hibernate步步为营】--最后的集合映射

上篇文章详细讨论了组合对象映射的原理,它其实指的是如何将对象模型中的组合关系映射到关系模型中,它是通过使用Hibernate提供的<component>标签来实现的,并需要在该标签中添加对应组合对象的属性,有关组合对象的映射请查看笔者的上篇文章.该篇文章来详细讨论下集合的映射关系,Java的集合有四种分别是Set.Map.List和普通集合,在开发时往往需要将这些集合转化为对应的关系模型,这种集合映射的实现过程就是我们今天要讨论的话题. 一.集合映射 1.1 集合小介 集合映射也是基本的映射,

微信小程序学习指南

作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 微信小程序正式公测, 张小龙全面阐述小程序,定档1月9日上线(附90分钟演讲全文) ... 前言:新人第一坑,跳坑指南:修改后,必须保存:ctrl+S: 1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教

[2017年第0届浙江工业大学之江学院程序设计竞赛决赛 I] qwb VS 去污棒(并查集,按秩合并,最小生成树,LCA)

题目链接:http://115.231.222.240:8081/JudgeOnline/problem.php?cid=1005&pid=8 题意:中文题面. 手动画一下会发现所求边必然存在于最大生成树上,那么就可以首先构造一棵最大生成树. 问题转化成一棵树上求两个点之间的链上的最短边,用倍增lca就可以做了,但是我不会. 于是可以考虑建树时的操作,在求最大生成树的时候按秩合并,即集合大的根要做集合小的根的父亲,这样连一条有向边,保证路径上的所有边没有变化,并且能够维持整棵树高不会超过log(