Java集合框架(六):Set 源码分析
1、Set 简述Java Set 是一个不包含重复元素的集合。它继承于 Collection 接口。 它有以下特点:
🌂与List不同,Java Set不是有序集合,它的元素没有特定的顺序。🌂Java Set不提供对插入元素的位置的控制。🌂它不能通过索引访问元素,但是可以搜索列表中的元素。🌂Set允许最多仅添加一个null元素。🌂Set接口在Java 8中有一个默认方法:spliterator。
2、Set 类图Java Set 接口继承了 Collection 接口。 Collection 接口继承了 Iterable 接口。 一些常用的 Set 实现类有 HashSet,LinkedHashSet,TreeSet,CopyOnWriteArraySet 和 ConcurrentSkipListSet。AbstractSet 提供了 Set 接口的基本实现,以减少 Set 实现类的工作量。
🌂Set 父接口:
1Collection<E>, Iterable<E>
🌂Set 子接口:
1NavigableSet<E>, SortedS ...
Java集合框架(五):ListIterator 源码分析
1、ListIterator 接口简述在Java中,ListIterator 是Collection API中的一个接口。 它扩展了Iterator接口。它是一个双向迭代器。 为了支持前向和后向迭代和CRUD操作,它具有以下方法。 我们可以将这个Iterator用于所有List实现的类,如ArrayList,CopyOnWriteArrayList,LinkedList,Stack,Vector等。
2、ListIterator 接口类图
3、ListIterator 接口方法摘要Java ListIterator 接口包含以下几个方法:
方法
描述
void add(E e)
将指定的元素插入列表中
boolean hasNext()
如果此列表迭代器在向前遍历列表时还有更多元素,则返回true
boolean hasPrevious()
如果此列表迭代器在反向遍历列表时还有更多元素,则返回true
E next()
返回列表中的下一个元素并前移光标位置
int nextIndex()
返回下一个元素的索引
E previous()
返回列表中的上一个 ...
Java集合框架(四):Iterator 源码分析
1、Java Iterator 简述Iterator迭代器的定义:迭代器(Iterator)模式,又叫做游标(Cursor)模式。GOF给出的定义是,提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。迭代器通常被称为“轻量级”对象,因为创建它的代价小。
在Java中,Iterator是 java.util 包中** Collection** 框架中的接口。 它是一个Java Cursor,用于迭代一组对象。🌂它用于逐个遍历集合对象元素。🌂它自 Java 1.2 被引入使用🌂它适用于所有 Collection 类。 所以它也被称为通用 Java Cursor。🌂它支持READ和REMOVE操作
2、Java 4种 CursorsJava Cursor 是一个迭代器,用于逐个迭代或遍历或检索Collection或Stream对象的元素。Java支持以下四种不同的** Cursor**
3、Java Iterator 类图如下面的类图所示,Java Iterator有四种方法。 我们已经熟悉前四种方法。 Oracle公司在Java SE 8版 ...
Java集合框架(三):Collection 源码分析
前言:本文我们主要学习Java集合框架的根接口Collection,通过本文我们可以进一步了解Collection的属性及提供的方法。在介绍Collection接口之前我们不得不先学习一下Iterable,因为Collection接口继承了它。
Collection接口类图从类图中我们看到Collection接口继承了Iterable接口
Iterable源码分析由类图我们可以发现,Iterable接口有三个方法,其中两个方法使用default修饰的,这是jdk1.8的新特性,允许接口中有默认实现方法,其实现类中可以有选择的重写这部分方法,下面我们看一下每个方法的作用是什么:
12345678910111213141516#返回元素类型为T的迭代器,有了这个迭代器就可以对集合中元素进行遍历Iterator<T> iterator();#遍历集合中的元素并对元素进行执行操作,直到遍历完成或抛出异常default void forEach(Consumer<? super T> action) { Objects.requireNonNull(act ...
Java集合框架(二):整体概览
Java集合框架简述Java中的集合类是一种工具类,就像是容器,存储任意数量的具有共同属性的对象,集合框架是一个用来代表和操纵集合的统一架构,包含如下部分:
1、接口:接口是代表集合的抽象数据类型,接口允许集合独立操纵其代表的细节。java.util.Collection是集合框架的顶级接口,它包含了一些重要的方法,比如:size(), iterator(), add(), remove(), clear(),集合类中都会实现这些方法。还有一些其它的重要接口,java.util.List, java.util.Set, java.util.Queue 和 java.util.Map。Map接口是一个独立的接口,它没有实现接口Collection,但它是结合框架重要的一部分。所有集合框架接口都在java.util包中。
下图中虚线为接口,红色为实现类
序号
接口描述
1
Collection 接口是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类, 只提供继承于 ...
Java集合框架(一):大纲
Java集合框架(一):大纲
Java集合框架(二):整体概览
Java集合框架(三):Collection 源码分析
Java集合框架(四):Iterator 源码分析
Java集合框架(五):ListIterator 源码分析
JavaJava集合框架(六):Set 源码分析
Java集合框架(七):SortedSet 源码分析
Java集合框架(八):List 源码分析
Java集合框架(九):Queue 源码分析
Java集合框架(十):Deque 源码分析
Java集合框架(十一):Map 源码分析
Java集合框架(十二):SortedMap 源码分析
Java集合框架(十三):HashSet 源码分析
Java集合框架(十四):LinkedHashSet 源码分析
Java集合框架(十五):TreeSet 源码分析
Java集合框架(十六):ArrayList 源码分析
Java集合框架(十七):LinkedList 源码分析
Java集合框架(十八):HashMap 源码分析
Java集合框架(十九):LinkedHashMap 源码分析
Java集合框架(二十):Tr ...
Java File操作汇总
1、创建文件🌂boolean java.io.File.createNewFile() throws IOException用来创建文件,如果文件存在,创建失败,返回false;
🌂🌂new File(“a.txt”);并不创建文件实体,只是创建一个指向“a.txt”的引用。
🌂🌂路径分隔符:File.separator
1234567891011121314151617181920212223242526package file.dol.sn; import java.io.File; public class FileDemo { public static void main(String[] args) { //new File()就相当于是C语言中定义一个指向“a.txt”的文件指针 File f1 = new File("a.txt"); try { //创建文件:boolean java.io.File.createNewFile() throws IOException boolean b ...
Java 流(Stream)、文件(File)和IO
Java 流(Stream)、文件(File)和IOJava.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
读取控制台输入Java 的控制台输入由 System.in 完成。为了获得一个绑定到控制台的字符流,你可以把 System.in 包装在一个 BufferedReader 对象中来创建一个字符流。下面是创建 BufferedReader 的基本语法:
12BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedReader 对象创建后,我们便 ...
mysql错误
MySql 建表时遇到[Err] 1050 - Table ‘users’ already exists异常解决方法首先看一下出现这个的代码:1234567CREATE TABLE Course(Cno CHAR(4)PRIMARY KEY, Cname CHAR(40)NOT NULL, Cpno CHAR(4), Ccredit SMALLINT, FOREIGN KEY(Cpno)REFERENCES Course(Cno));
点击运行之后会出现[Err] 1050 - Table ‘users’ already exists异常解决方法这个错误提示,对此应该怎么解决呢,很简单
1234567CREATE TABLE IF NOT EXISTS Course(Cno CHAR(4)PRIMARY KEY, Cname CHAR(40)NOT NULL, Cpno CHAR(4), Ccredit SMALLINT, FOREIGN KEY(Cpno)REFERENCES Course(Cno));
至此完美解决
分析:错误原因:重复创建了表格。
Java之数组遍历&反转&修改
前言:这个特别简单,是有同学私信,才写这个的
1、字符串的遍历在Java中,字符串提供了提取字符的方法charAt,这个方法会返回一个char,因此我们可以利用这一点来实现字符串的遍历;
1234567891011package demo1;public class Test_3 { public static void main(String[] args) { String str ="abcdefg"; for(int i=0;i<str.length();i++) { char letter = str.charAt(i); System.out.println(letter); } }}
首先呢通过这个方法对字符串进行遍历,得到一个新的,原理很简单
2、字符串的反转123456789101112131415161718192021222324package demo1;public class Test_3 { public static void main(Stri ...