字符串、集合、数组、基本数据类型是java里最基础的知识点,但也是频频被使用的,在算法题里属于高频基础题,下面结合一些题目来学习这些知识点。...} } System.out.println( +arr[0] + "," + arr[1] ); } } } 总结:这道题考察了正则匹配...true : false; } } 总结:这是一道比较综合的题目,考察了字符串的正则匹配,递归算法等。...T5.IP地址转整数 import java.util.Scanner; public class Demo5 { public static void main(String[] args)...(Long.parseLong(inputArr[2])<<8) + (Long.parseLong(inputArr[3]))) ; } } } 总结:这道题用移位运算符特别简单
29.Algorithm Gossip: 产生可能的集合 说明 给定一组数字或符号,产生所有可能的集合(包括空集合), 例如给定1 2 3,则可能的集合为: {}、{1}、{1,2}、{1,2,3}、{...解法 如果不考虑字典顺序,则有个简单的方法可以产生所有的集合,思考二进位数字加法,并注意1出现的位置,如果每个位置都对应一个数字,则由1所对应的数字所产生的就是一个集合,例如: ?...,当依序产生集合时,如果最后一个元素是n,而倒数第二个元素是m的话,例如: {a b c d e n} 则下一个集合就是{a b c d e+1},再依序加入后续的元素。...例如有四个元素,而当产生{1 2 3 4}集合时,则下一个集合就是{1 2 3+1},也就是{1 2 4},由于最后一个元素还是4,所以下一个集合就是{1 2+1},也就是{1 3},接下来再加入后续元素...4,也就是{1 3 4},由于又遇到元素4,所以下一个集合是{1 3+1},也就是{1 4}。
前言 上一篇博客 聊一聊 Android 中巧妙的位操作 中,我们讲解了 java 中常用的位运算及常用应用场景,今天,让我们一起来看一下,面试中常见的位操作的算法题。...第二种解法 既然其他数字都出现 n 次 (n > 1),只有一个数字出现 1 次, 那么我们可以先对数组进行排序,接着去遍历数组,对于中间的数字考虑是否前后有相同的,对于第一数字单独处理 import java.util...} return A[i]; } ---- 相关推荐 参考博客 在每个数字都出现K次的数组中,找只出现一次的数 相关推荐 聊一聊 Android 中巧妙的位操作 二分查找的相关算法题...快速排序的相关算法题(java)
题目描述 假设利用两个线性表LA和LB分别表示两个集合A和B(即:线性表中的数据元素即为集合中的成员),现要求一个新的集合A=A∪B。...上述操作过程可用下列算法描述之。 ? 上图算法中,在第8行取得集合B中的元素,然后再在第10行插入到集合A中。你的任务是先输出集合A和集合B中的元素,每个集合在一行中输出。...然后每次在将集合B中的元素取出插入到集合A尾部后输出集合A中的元素。当然你的代码可以和上面的代码不一样,只要有相同的输出即可。 输入 有多组测试数据,每组测试数据占两行。...第一行是集合A,第一个整数m(0<m<=100)代表集合A起始有m个元素,后面有m个整数,代表A中的元素。...2 6 3 1 5 2 6 3 7 1 5 2 6 3 7 9 3 2 7 3 2 3 2 7 2 5 1 4 1 2 4 5 2 5 1 4 2 5 1 4 2 5 1 4 2 5 1 4 原题:
split()通过指定分隔符对字符串进行切片,如果参数num有指定值,则仅分隔 num 个子字符串. usage; str.split(str=””, num=...
一、集合的由来 通常,我们的Java程序需要根据程序运行时才知道创建了多少个对象。但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型。...集合便应运而生了。 二、集合是什么? Java集合类存放在java.util包中,是一个用来存放对象的容器。 注意: 1.集合只能存放对象。...比如你存入一个int型数据66放入集合中,其实它是自动转换成Integer类后存入的,Java中每一种基本数据类型都有对应的引用类型。 2.集合存放的都是对象的引用,而非对象本身。...所以我们称集合中的对象就是集合中对象的引用。对象本身还是放在堆内存中。 3.集合可以存放不同类型,不限数量的数据类型。...三、Java集合框架 首先,我们来看一张图 发现一个特点,上述所有的集合类,除了map系列的集合,即左边的集合都实现了Iterator接口。
先调用存储的key的hashCode方法,经过 某个算法得到hash值,如果这个哈希表中不存在这个hash值,则直接加入元素。...但是TreeSet集合的存储是有序的,即:存储到集合中的元素是按自然顺序存储的。 判断元素唯一性的方式: 根据比较方法的返回值来判断。是0(零)就存入集合,不是0就不存。...因为Set集合是不能有重复的元素,无序。...Java提供了一个Comparable接口,该接口里定义了一个compareTo(Object obj)方法,该方法返回一个整数值,实现了该接口的对象就可以比较大小。...也就是说,当遍历LinkedHashSet集合里元素时,HashSet将会按元素的添加顺序来访问集合里的元素。
与Java中的数组相比,它的容量能动态增长。...它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。 ?...RandmoAccess是java中用来被List实现,为List提供快速访问功能的。在ArrayList中,我们即可以通过元素的序号快速获取元素对象;这就是快速随机访问。...for (int i = 0; i < size; i++) elementData[i] = null; size = 0; } // 将集合...= 0; } // 从index位置开始,将集合c添加到ArrayList public boolean addAll(int index, Collection<?
https://blog.csdn.net/gdutxiaoxu/article/details/51299994 快速排序的相关算法题(java) 关于二分查找的,可以参考我的这篇博客二分查找的相关算法题...关于归并排序的的,可以参考我的这篇博客归并排序 递归版和非递归版的实现(java) 关于快速排序的,可以参考我的这篇博客 快速排序的相关算法题(java) 转载请注明原博客地址: 源码下载地址...: 最近在做各个大公司的笔试题 ,比如阿里,腾讯,cvte等等,经常会遇到关于快速排序的各种算法题,包括时间复杂度,空间复杂度的分析与计算等等,于是本人查阅了相关的资料,先总结如下 本篇博客主要讲解一下三点...low]; } data[low] = pivotKey; // 返回基准点的索引 return low; } } ---- 关于二分查找的,可以参考我的这篇博客二分查找的相关算法题...关于归并排序的的,可以参考我的这篇博客归并排序 递归版和非递归版的实现(java) 关于快速排序的,可以参考我的这篇博客 快速排序的相关算法题(java) 转载请注明原博客地址: 源码下载地址
为什么开始刷题? 从大一就知道了 leetcode,但刷题总是三天打鱼,两天晒网,会发现刷过的题,隔一段时间再看还是需要很久才能再想起来,于是就萌发了刷一题总结一题的想法。...所以大家如果想刷题的话,也不用怕自己基础不好,大不了哪些名词不会就去查,一点点积累就可以,重要的是开始和坚持。 现在的感觉 从开始可能只是觉得该刷一刷题,到现在可能真的是爱上了刷题。...刷题的理解 一些人可能会纠结用什么语言去刷,其实没必要纠结的。刷题需要考虑的是算法,而不是语言。算法就像是从家里到超市该怎么走?出门左拐,右拐直走…而语言是我们选择的交通工具,骑车?步行?开车?...而好的算法可能更像是,我们偶然发现了一条近路,降低了我们的时间复杂度或者是空间复杂度。 刷了 100 道题了,我觉得必须要掌握的就是递归的思想了,利用这个思想可以解大部分的题了。...后续我会持续更新LeetCode 算法题详解 JAVA 版~
注意:Map中的集合不能包含重复的键,值可以重复。每个键只能对应一个值。 Map集合是键值对形式存储值的,所以遍历Map集合无非就是获取键和值,根据实际需求,进行获取键和值。...Set> entrySet(); //即将Map集合转化为Set集合。...} 三、具体实现 接口java.util.Map,包括3个实现类:HashMap、Hashtable、TreeMap。...(即先找到丈夫,再去找妻子) keySet的演示图解 (二)entrySet 先获取map中的键值关系封装成一个个的entry对象, 存储到一个Set集合中,再迭代这个Set集合, 根据entry获取对应的...可以对Map集合中的键进行排序。 五、HashMap
List集合 List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引。 List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。...List集合里添加了一些根据索引来操作集合元素的方法 一、ArrayList ArrayList是List接口的典型实现类,本质上,ArrayList是对象引用的一个变长数组。...java.util.vector提供了向量类(Vector)以实现类似动态数组的功能。...程序中定义Enumeration类的一个对象Enumeration是java.util中的一个接口类, (3)public final synchronized Enumeration elements...java.util包中的其他类中也都有这类方法,以便于用户获取对应的枚举类型。 在Enumeration中封装了有关枚举数据集合的方法。
Java 集合框架01-----Java集合总览 大家好,我是架构君,一个会写代码吟诗的架构师。...今天说一说Java 集合框架01-----Java集合总览,希望能够帮助大家进步!!! 今天开始阅读Java集合源码了。...集合框架类图如下图所示: 接下来我们将按照这个类图来开始我们的分析之旅。 总体说明: 最根部就是两个接口Collection 和Map 1....Collection 主要有List,Set和Queue三个分支,Collection定义了集合的基本操作,如集合的查找,修改,合并 - List是一个有序队列,允许重复元素,其实现类ArrayList...Arrays和Collection是操作数组和集合的工具类。
Set精讲(Java)·算法常用集合处理方法 Set概述 Set集合类似于一个罐子,程序可以依次把多个对象“丢进”Set集合,而Set集合通常不能记住元素的添加顺序。...Set集合不允许包含相同的元素,如果试图把两个相同元素加入同一个Set集合中,则添加操作失败,add()方法返回false,且新元素不会被加入。...,也就是说当遍历集合LinkedHashSet集合里的元素时,集合将会按元素的添加顺序来访问集合里的元素。...输出集合里的元素时,元素顺序总是与添加顺序一致。但是LinkedHashSet依然是HashSet,因此它不允许集合重复。...import java.util.LinkedHashSet; import java.util.Set; public class SetFun { public static void main
我这里的思路,就是使用HashMap集合来存放键值对,主键存放数组元素,Value值存放对应的下标,那么我们就只需要单层的循环就能完成相同效果的遍历,大大节省了时间。...提交代码: class Solution { public int[] twoSum(int[] nums, int target) { //创建map集合,存放键值对,Key值为数组元素...,value值为下标 Map map = new HashMap(); //遍历数组,将键值对存入集合 for(int...字符串轮转 原题链接:面试题 01.09. 字符串轮转 题目描述: 字符串轮转。...的✔博客主页✔ ⚽来刷题⚽ 记录每日LeetCode✔刷题专栏✔
1.创建集合,并使用forEach和迭代器分别遍历 public class CollectionDemo { /* * 1.创建集合对象 * 2.创建添加集合元素...ArrayList(); //2.添加元素 array.add(""); array.add(15); array.add("java...(); while(it.hasNext()){ System.out.println(it.next()); } } } 2.集合添加集合...,集合元素个数,集合化为Object数组(可以添加自定义对象) public static void main(String[] args) { //1.创建集合对象...ArrayList(); //2.添加元素 array.add(""); array.add(15); array.add("java
集合 集合就是Java中提供的一个容器,可以用来存储多个数据。...集合和数组的区别: 1、数据的长度固定的,集合的长度是可变的; 2、数组中存储的是同一类型的元素,可以存储基本数据类型,集合存储的都是对象; 学习集合的目标: 1、会使用集合存储数据; 2、会遍历集合,...把数据取出来; 3、掌握每种集合的特性; 集合框架学习方式: 1、学习顶层:学习顶层接口/抽象类中的共性方法,所有的子类都可以用; 2、使用底层:底层不是接口/抽象类,需要底层子类创建对象使用; 集合的结构图如下...: Java.util.Collection接口: 所有单列接口的最顶层接口,里面定义了所有单列结合共性的方法; 任意的单列集合都可以使用Collection接口中的方法; Collection接口中的方法...contains(Object obj):判断当前集合中是否包含给定的对象; boolean isEmpty():判断当前集合是否为空; int size():返回集合中元素的个数; Object[]
List集合 Java.utli.List接口 extends Collection接口 List接口的特点: 1、有序的集合,存储的元素和去除的元素顺序是一致的; 2、有索引,包含了一些带有索引的方法...在操作索引的时候,一定要防止索引的异常 ArrayIndexOutOfBoundsException:数组索引越界异常 IndexOutOfBoundsException:索引越界异常,集合...ArrayList集合: 存储的结构是数组结构,元素增删慢,查询快 一般用于:查询数据,遍历数据 LinkedList集合: 数据存储的结构是链表结构,方便元素添加,删除 特点: 1、底层是链表...; 2、里边包含了大量的首尾元素方法; 注意: 使用LinkedList集合特有方法,不能使用多态; 常用方法: void addFirst(E e):将指定元素插入此列表的开头
判断参数集合是不是当前集合在子集合 Object[] toArray(); List接口继承Collection接口方法。...获取当前集合指定子集合,从fromIndex开始,到toIndex结束。..., Hello, Java, Hello, World] } } 删除方法 boolean remove(Object obj); 删除集合中的指定元素,删除成功返回true,未找到指定元素...at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)...at java.util.ArrayList$Itr.next(ArrayList.java:859) at com.qfedu.b_iterator.Demo3.main
List是有序的队列,List中可以有重复的元素;而Set是数学概念中的集合,Set中没有重复元素! List和Set都有它们各自的实现类。...1.Collection的定义如下: public interface Collection extends Iterable {} 它是一个接口,是高度抽象出来的集合,它包含了集合的基本操作...Set是没有重复元素的集合。...集合可以通过Iterator去遍历集合中的元素。Iterator提供的API接口,包括:是否存在下一个元素、获取下一个元素、删除当前元素。...即,当某一个线程A通过iterator去遍历某集合的过程中,若该集合的内容被其他线程所改变了;那么线程A访问集合时,就会抛出ConcurrentModificationException异常,产生fail-fast
领取专属 10元无门槛券
手把手带您无忧上云