arraylist

Leetcode 题解 - 搜索

坚强是说给别人听的谎言 提交于 2020-01-22 18:30:28
BFS 广度优先搜索一层一层地进行遍历,每层遍历都以上一层遍历的结果作为起点,遍历一个距离能访问到的所有节点。需要注意的是,遍历过的节点不能再次被遍历。 第一层: 0 -> {6,2,1,5} 第二层: 6 -> {4} 2 -> {} 1 -> {} 5 -> {3} 第三层: 4 -> {} 3 -> {} 每一层遍历的节点都与根节点距离相同。设 di 表示第 i 个节点与根节点的距离,推导出一个结论:对于先遍历的节点 i 与后遍历的节点 j,有 di <= dj。利用这个结论,可以求解最短路径等 最优解 问题:第一次遍历到目的节点,其所经过的路径为最短路径。应该注意的是,使用 BFS 只能求解无权图的最短路径,无权图是指从一个节点到另一个节点的代价都记为 1。 在程序实现 BFS 时需要考虑以下问题: 队列:用来存储每一轮遍历得到的节点; 标记:对于遍历过的节点,应该将它标记,防止重复遍历。 1. 计算在网格中从原点到特定点的最短路径长度 Leetcode-1091. 二进制矩阵中的最短路径 在一个 N × N 的方形网格中,每个单元格有两种状态:空(0)或者阻塞(1)。 一条从左上角到右下角、长度为 k 的畅通路径,由满足下述条件的单元格 C_1, C_2, …, C_k 组成: 相邻单元格 C_i 和 C_{i+1} 在八个方向之一上连通(此时,C_i 和 C_{i+1}

Java自学-泛型 泛型转型

回眸只為那壹抹淺笑 提交于 2020-01-22 16:36:10
Java 中的子类泛型转型成父类泛型 步骤 1 : 对象转型 根据面向对象学习的知识,子类转父类 是一定可以成功的 package generic; import charactor.ADHero; import charactor.Hero; public class TestGeneric { public static void main(String[] args) { Hero h = new Hero(); ADHero ad = new ADHero(); //子类转父类 h = ad; } } 步骤 2 : 子类泛型转父类泛型 既然 子类对象 转 父类对象是可以成功的,那么子类泛型转父类泛型能成功吗? 如代码 hs的泛型是父类Hero adhs 的泛型是子类ADHero 那么 把adhs转换为hs能成功吗? package generic; import java.util.ArrayList; import charactor.ADHero; import charactor.Hero; public class TestGeneric { public static void main(String[] args) { ArrayList<Hero> hs =new ArrayList<>(); ArrayList<ADHero> adhs =new

Java8 Lambda 使用总结

和自甴很熟 提交于 2020-01-22 04:59:46
文章目录 一、演示示例 1.遍历 2.去重 3.获取对象中的某个参数为一个新的List 4.获取对象中的某个参数为一个新的Map 5.过滤器 6.排序 二、方法总结 1.1`.forEach(v ->{ })` 1.2`.forEachOrdered(v ->{ })` 2.1`.map()` 2.2`.peek()` 3`.collect()` 4`.sorted()` 5`.filter()` 6`.limit()` 7`.count()` 8`.toArray()` 9`.max()\.min()` 10`.reduce()` 11`.distinct()` 12.`.anyMatch()\.allMatch()\.noneMatch()` 13`.findFirst()` 三、单体操作 1.1`.get()` 1.2`.orElse()` 2`.isPresent()` 一、演示示例 1.遍历 List < Integer > integerList = new ArrayList < > ( ) ; integerList . add ( 1 ) ; integerList . add ( 2 ) ; integerList . add ( 3 ) ; integerList . stream ( ) . forEach ( integer - > { System .

《吊打面试官》系列-ArrayList

旧城冷巷雨未停 提交于 2020-01-22 03:47:18
本文转载自帅丙(三太子敖丙)的博客下的 《吊打面试官》系列-ArrayList 前言 作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数竞争对手,每次都只能看到无数落寞的身影失望的离开,略感愧疚( 请允许我使用一下夸张的修辞手法 )。 于是在一个寂寞难耐的夜晚,我痛定思痛,决定开始写互联网技术栈面试相关的文章,希望能帮助各位读者以后面试势如破竹,对面试官进行360°的反击,吊打问你的面试官,让一同面试的同僚瞠目结舌,疯狂收割大厂Offer! 所有文章的名字只是我的噱头,我们应该有一颗谦逊的心,所以希望大家怀着空杯心态好好学,一起进步。 正文 一个婀娜多姿,穿着衬衣的小姐姐,拿着一个精致的小笔记本,径直走过来坐在我的面前。 看着眼前这个美丽的女人,心想这不会就是Java基础系列的面试官吧,真香。 不过看样子这么年轻应该问不出什么深度的吧,嘻嘻。(哦?是么😏) 帅丙,上次面试到现在都过去2个星期你才过来,为啥鸽了这么久? 美丽迷人的面试官您好,因为之前得了流感,差点就没了,还有最近年底忙年会和年终review的事情,实在太忙了,不好意思。 还做了一波导演(其实是打杂)去拍摄蘑菇街的年会视频了,实在忙到爆炸,周末也没能怼出文章哈哈。 好吧那我理解了,下次这种情况记得提前跟我说,对了,多喝热水。 面试官最后的多喝热水,直接触动我内心的防线,居然还有人这么关心我,帅丙的眼角,又湿了

Java语言学习总结 高级篇 ArrayList类的创建和使用

爷,独闯天下 提交于 2020-01-22 03:46:41
ArrayList类 什么是ArrayList类 ArrayList是可以实现长度可变的数组 存储在内的数据称为元素。此类提供一 些方法来操作内部存储的元素。 ArrayList 中可不断添加元素,其大小也自动增长 。 我们知道定义的数组长度是不可以改变了,而ArrayList就客服了这点,可以根据需要随时添加元素,加长长度。 JDK_API 中的 介绍如图: ArrayList的使用步骤 三步: 导包——创建——使用 导包: import java.util.ArrayList < E > < E >表示一种指定的数据类型,叫做泛型。 泛型只能是引用类型,不能是基本数据类型 E,取自Element (元素)的首字母。在出现E的地方,我们使用一种引用数据类型将其替换即可,表示我们将存储哪种引用类型的元素。 对于ArrayList来说,有一个尖括号< E >代表泛型。 泛型:也就是装在集合当中的所有元素,全都是统一的什么类型。 注意:泛型只能是引用类型,不能是基本类型。 注意事项: 对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。 如果内容是空,得到的是空的中括号: [] 导包创建引用 示例代码: import java . util . ArrayList ; public class ArrayTestTest { public static void

How do i add multiple Images from my Firebase Database to my ArrayList

╄→尐↘猪︶ㄣ 提交于 2020-01-22 03:09:35
问题 public class getFirebase extends AppCompatActivity { DatabaseReference dbRef; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_get_firebase); dbRef = FirebaseDatabase.getInstance().getReference().child("theimage"); final List<Integer> images = new ArrayList<>(); dbRef.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull com.google.firebase.database.DataSnapshot

checkbox not get checked according to list values in android

夙愿已清 提交于 2020-01-22 02:49:25
问题 Sorry for my bad English, I am individually getting array list value to the checkboxes. (Actually, these are the weekdays that are coming from the activity). but the problem is checkbox only set the first position value to checkbox. Please let me know what's wrong in my code. Below is the Code Snippet Let Say this is the list value: [Monday, Tuesday, Sunday] This is the class that i passing the list for (int i = 0; i < myList.size(); i++) { switch (myList.get(i)){ case "Monday": cbMon

用大白话告诉你ArrayList的底层原理

夙愿已清 提交于 2020-01-22 01:04:58
【部分代码参考自leesf的博客内容】 一、ArrayList的数据结构 ArrayList的底层数据结构就是一个数组,数组元素的类型为Object类型,对ArrayList的所有操作底层都是基于数组的。 二、ArrayList的线程安全性 对ArrayList进行添加元素的操作的时候是分两个步骤进行的,即第一步先在object[size]的位置上存放需要添加的元素;第二步将size的值增加1。由于这个过程在多线程的环境下是不能保证具有原子性的,因此ArrayList在多线程的环境下是线程不安全的。 具体举例说明:在单线程运行的情况下,如果Size = 0,添加一个元素后,此元素在位置 0,而且Size=1;而如果是在多线程情况下,比如有两个线程,线程 A 先将元素存放在位置0。但是此时 CPU 调度线程A暂停,线程 B 得到运行的机会。线程B也向此ArrayList 添加元素,因为此时 Size 仍然等于 0 (注意哦,我们假设的是添加一个元素是要两个步骤哦,而线程A仅仅完成了步骤1),所以线程B也将元素存放在位置0。然后线程A和线程B都继续运行,都增 加 Size 的值。 那好,现在我们来看看 ArrayList 的情况,元素实际上只有一个,存放在位置 0,而Size却等于 2。这就是“线程不安全”了。 如果非要在多线程的环境下使用 ArrayList,就需要保证它的线程安全性

自己动手系列——实现一个简单的ArrayList

狂风中的少年 提交于 2020-01-22 00:39:30
ArrayList是Java集合框架中一个经典的实现类。他比起常用的数组而言,明显的优点在于,可以随意的添加和删除元素而不需考虑数组的大小。处于练手的目的,实现一个简单的ArrayList,并且把实现的过程在此记录。 实现的ArrayList主要的功能如下: 默认构造器和一个参数的有参构造器 add方法 get方法 indexOf方法 contains方法 size方法 isEmpty方法 remove方法 这个简单的ArrayList类 取名为 SimpleArrayList ,全部的代码查看 SimpleArrayList代码 构造器 源码ArrayList一共有三个构造器,一个无参构造器,一个参数为int型有参构造器,一个参数为Collection型的有参构造器。参数为Collection型的构造器用来实现将其他继承Collection类的容器类转换成ArrayList。SimpleArrayList类因为还没有手动实现其他的容器类,所以实现的构造方法只有2个。代码如下: public SimpleArrayList(){ this(DEFAULT_CAPACITY); } public SimpleArrayList(int size){ if (size < 0){ throw new IllegalArgumentException("默认的大小" + size);

深入Java集合学习系列:ArrayList的实现原理

大憨熊 提交于 2020-01-22 00:33:28
1. ArrayList概述: ArrayList是 List接口 的 可变 数组 的 实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向ArrayList中不断添加元素,其容量也自动增长。 自动增长会带来 数据向新数组的重新拷贝 ,因此, 如果可预知数据量的多少,可在构造ArrayList时指定其容量 。在添加大量元素前,应用程序也可以使用ensureCapacity操作来增加ArrayList实例的容量,这可以减少递增式再分配的数量。 注意,此实现 不是同步 的。如果多个线程同时访问一个ArrayList实例,而其中至少一个线程从结构上修改了列表,那么它必须保持外部同步。 2. ArrayList的实现: 对于ArrayList而言,它实现List接口、 底层使用数组保存 所有元素。其操作基本上是对数组的操作。下面我们来分析ArrayList的源代码: 1) 底层使用数组实现: private transient Object[] elementData; 2) 构造方法: ArrayList提供了三种方式的构造器,可以构造一个默认初始容量为10的空列表、构造一个指定初始容量的空列表以及构造一个包含指定collection的元素的列表