![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
集合
玥骋
春雨如膏,农夫喜其润泽,行人恶其泥泞。
展开
-
集合arrayList,HashMap,HashSet的几个小练习
arrayList,HashMap,HashSet的几个小练习作业1,arrayList封装一个古诗类,并且提供他的get set方法,重写其toString方法提供一个带参数的构造器,用来实例化古诗对象,将古诗对象放入arraylist集合中,并且进行倒序遍历在倒序过程中,对古诗对象进行处理,保留其前十五个字,对超出十五的部分用“…”来代替在控制台打印经过处理后的 arraylist集合package com.lyc.homeWork;import com.sun.jmx.snmp.原创 2021-12-11 20:07:15 · 520 阅读 · 0 评论 -
Collections工具类
Collections工具类Collections工具类介绍collections是一个操作Set,List,Map等集合的工具类collections中提供了一系列静态的方法对集合元素进行排序,查询和修改等操作。排序操作reverse(List),反转List中元素的顺序shuffle(list):对List集合元素进行随机排序sort(List):根据元素的自然顺序对指定的List集合元素按升序排序sort(List,Comparator):根据指定的Comparator产生的顺序原创 2021-12-05 19:40:18 · 815 阅读 · 0 评论 -
集合Tree
TreeTreeSetTreeSet的底层就是TreeMapTreeSet练习TreeSet可以进行排序package com.lyc._Tree;import java.util.Comparator;import java.util.TreeSet;public class treeSet01 { public static void main(String[] args) { //笔记 //1.当我们使用无参构造器来创建treeSet时原创 2021-12-03 22:48:36 · 674 阅读 · 0 评论 -
集合的选型规则
集合的选型规则在开发中选择什么集合实现类,主要取决于业务操作的特点,然后根据集合实现类特性进行选择,分析如下:先判断存储的类型,(一组对象或一组键值对)一组对象(单列数据):collection接口允许重复:List 增删多:linkedList(底层维护了一个双向链表) 改查多:ArrayList(底层维护了Object类型的可变数组)不予许重复:Set 1.无序:HashSet[底层是HashMap,维护了一个哈希表,即(数组+链表+红黑树)] 2.排序TreeSe原创 2021-12-02 18:34:12 · 316 阅读 · 0 评论 -
Map接口的实现Properties
Map接口的实现Properties基本介绍properties类继承了hashtable类,并且实现了map接口,也是使用一种键值对的形式来保存数据使用特点与hashtable类似properties还可用于从 xxx.properties文件中,加载数据到properties类对象properties通常作为配置文件基本使用package com.lyc._Map._HashTable;import java.util.Properties;public class prope原创 2021-12-02 17:34:12 · 475 阅读 · 0 评论 -
Hashtable源码理解
HashtableHashtable基本介绍:存放的元素是键值对形式Hashtable的键与值都不能为nullHashtable的使用方法基本上与hashmap一样Hashtable是线程安全的(synchronized),hashmap是线程不安全的//Hashtable的put源码 public synchronized V put(K key, V value) {//Hashtable是线程安全的(synchronized) // Make sure原创 2021-12-02 14:32:41 · 221 阅读 · 0 评论 -
HashMap源码解读,与扩容树化
HashMap扩容与树化HashMap源码package com.lyc._Map;import java.util.HashMap;public class HashMapSource1 { public static void main(String[] args) { HashMap hashMap = new HashMap(); hashMap.put("java",10);//ok hashMap.put("python原创 2021-12-02 13:20:49 · 762 阅读 · 1 评论 -
Map接口常用的几种遍历方式与小练习
Map接口常用的几种遍历方式与小练习keyset:获取所有的键,我们可以通过键获取值entryset:获取所有的键值对values:获取所有的值:此方法只能获取到value,无法获取keypackage com.JiHe_.Map_;import java.awt.print.Book;import java.util.*;public class Demo05 { public static void main(String[] args) { Map ha原创 2021-11-21 13:34:33 · 261 阅读 · 0 评论 -
Map接口常用的几个方法
Map接口常用的几个方法put:添加remove:根据键删除映射关系get:根据键获取值size:获取元素个数isEmpty:判断元素个数是否为0clear:清除集合内的元素containskey:查找键是否存在package com.JiHe_.Map_;import java.awt.print.Book;import java.util.HashMap;public class Demo05 { public static void main(String[] a原创 2021-11-20 19:07:23 · 501 阅读 · 0 评论 -
Map接口的特点
Map接口Map接口实现类的特点(非常实用)Map接口,用于保存具有映射关系的数据,(key——value)Map中的key和value可以是任何引用类型的数据,会封装到HashMap$Node对象中Map中的key不允许重复,原因与HashSet一样,详情看HashSet源码Map中的value可以重复Map中的key值可以为null,value也可以为null,注意key为null,只能有一个,value为null可以有多个,常用String类可以作为Map的keykey和value原创 2021-11-19 20:16:47 · 1765 阅读 · 0 评论 -
LinkedHashSet解析与练习
LinkedHashSet解析与练习1.LinkedHashSet中元素/数据的加入顺序和取出顺序是一致的2.LinkedHashSet的底层维护的是一个LinkedHashMap(是HashMap的子类),(数组table+双向链表)3.table数组的初始空间还是16,也就是第一次添加时直接将table扩容到164.每个数组空间中存放的不再是Node结点,变成了LinkdeHashMap$Entrybefore, after专门进行双向链表的链接//这个继承关系是在内部类发生的stat原创 2021-11-16 20:59:41 · 1000 阅读 · 0 评论 -
Set接口的实现类LinkedHashSet
Set接口的实现类LinkedHashSetLinkedhashset的全面说明1.LinkedHashSet时HashSet的子类2.linkedHashSet底层是一个LinkedHashMap,底层维护了一个数组+双向链表的结构,3.LinkedHashSet根据元素的hashCode值来决定元素的存储位置,同时使用链表维护元素的次序(双向链表,保证了遍历元素时有序)4.LinkedHashSet不允许添加重复元素package com.JiHe_.Set_;import java原创 2021-11-16 19:43:06 · 971 阅读 · 0 评论 -
HashSet作业练习
HashSet作业练习案例一定义一个Employee类,该类包含private成员属性name,age1.创建三个Employee对象放入HashSet中2.当name与age相同时,被认为是相同的员工,不能添加到HshSet中package com.JiHe_.Set_;import java.util.HashSet;import java.util.Objects;public class Employee_ { public static void main(St原创 2021-11-13 10:27:15 · 1244 阅读 · 0 评论 -
HashSet源码
HashSet源码add()方法第一次添加元素分析package com.JiHe_.Set_;import java.util.HashSet;public class Demo { public static void main(String[] args) { HashSet<Object> hashSet = new HashSet<>(); hashSet.add("java"); hashSet.ad原创 2021-11-12 09:49:53 · 952 阅读 · 0 评论 -
HashSet机制说明与模拟
HashSet机制说明与模拟分析HashSet底层是HashMap,HashMap底层是:数组+链表+红黑树为了更好的理解:模拟一个简单的 数组+链表结构步骤:先获取元素的哈希值(hashCode方法)对哈希值进行运算得出一个索引值,即为要存放在哈希表中的位置号如果该位置没有其他元素则直接存放。如果该位置已有其他元素,泽而需要进行equals()方法进行判断,如果相等,则不再添加,如果不相等,则以链表的方式添加案例:模拟一个简单的 数组+链表结构package com.JiHe_.原创 2021-11-09 19:27:21 · 243 阅读 · 0 评论 -
集合的学习9:Set接口
Set接口set接口和常用方法set接口基本介绍1.无序:添加和取出的顺序不一样,没有索引2.不允许重复元素,所以最多一个null3.jdkAPI中set接口的实现类有:HashSet,TreeSet,等等set接口的常用方法和接口和list一样,set接口也是collection的子接口,因此,常用方法与collection接口一样如:size():获取元素个数,isEmpty():判断是否为空,countains(object)查找元素是否存在,iterator()迭代器add()原创 2021-11-09 15:46:57 · 153 阅读 · 0 评论 -
linkedList底层结构
linkedList底层结构LinkedList的特点LinkedList实现了双向链表和双端队列可以添加任意元素,且元素可重复,包括null线程不安全的,没有实现线程同步,他的方法没有使用synchronized,LinkedList的底层操作机制linkedlist底层维护了一个双向链表。linkedlist中维护了两个属性,first和last,分别指向首结点和尾结点。每个结点(Node对象),里面维护了prev,next,item三个属性,其中通过prev指向前一个结点,通过n原创 2021-11-07 20:48:16 · 631 阅读 · 0 评论 -
Vector底层结构和源码剖析
Vector底层结构和源码剖析Vector的基本介绍vector类的定义说明源码public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializablevector底层也是一个对象数组:protected Object[] elementDatavector是线程同步的,也就是原创 2021-11-06 16:53:47 · 235 阅读 · 0 评论 -
集合5,分析ArrayList源码
分析ArrayList源码先说结论,下面是源码分析Array List中维护了一个Object类型的数组,elementData[deBug看源码上看的很清楚]当创建ArrayList对象时,如果使用的是无参构造器,则初识elementData容量为 0,第一次添加则扩容elementData容量为10,如果需要再扩容,则扩容elementData为原先的1.5倍如果使用的数指定大小的构造器,则初始大小为elementData的指定大小,如果需要继续扩容则,则直接扩容elementData为1.5原创 2021-11-06 11:15:12 · 96 阅读 · 0 评论 -
List小练习(使用冒泡排序法)
List小练习(冒泡排序法)注:ArrrayList,LinkedList,Vector,的遍历方式可通用使用List控制图书排序按价格排序,从低到高(使用冒泡排序)格式为:名称:xx,价格:xx,作者:xx注:冒泡排序是比较基础的排序算法之一,其思想是:每相邻元素俩俩比较,较大的数下沉继续往下比较,较小的数上浮,这样一趟下来就会排列出一个最大的数,重复操作就会排完整组。package com.JiHe_.List_;import java.util.Iterator;import原创 2021-11-05 16:23:03 · 268 阅读 · 0 评论 -
集合(3)list接口的常用方法
list接口方法List接口基本介绍list集合类中元素有序,即(取出顺序与添加顺序一致),且可重复案例package com.JiHe_.List_;import java.util.ArrayList;import java.util.List;public class Demo01 { public static void main(String[] args) { List list = new ArrayList(); list.ad原创 2021-11-05 12:07:52 · 183 阅读 · 0 评论 -
集合2:集合的遍历
collection接口遍历元素方式一:使用IteratorIterator对象被称为迭代器,主要用于遍历collection集合中的元素所有实现了collection接口的集合类,都有一个iterator()方法,用以返回一个实现Iterator接口的对象,即可以返回一个迭代器。iterator的结构Iterator仅用于遍历集合,它本身并不存放对象package com.JiHe_.Collection_;import java.util.ArrayList;import java原创 2021-11-04 16:53:28 · 362 阅读 · 0 评论