arraylist

How to sort ArrayList<Object> in Ascending order android

倾然丶 夕夏残阳落幕 提交于 2020-01-21 00:05:11
问题 I have a requirement to sort ArrayList<Object> (Custom objects) in Ascending order based upon name. For that purpose I am using comparator method as like My ArrayList : ArrayList<Model> modelList = new ArrayList<Model>(); Code I am using: Comparator<Model> comparator = new Comparator<Model>() { @Override public int compare(CarsModel lhs, CarsModel rhs) { String left = lhs.getName(); String right = rhs.getName(); return left.compareTo(right); } }; ArrayList<Model> sortedModel = Collections

小白学Java:奇怪的RandomAccess

谁说我不能喝 提交于 2020-01-20 21:15:38
目录 小白学Java:奇怪的RandomAccess RandomAccess是个啥 forLoop与Iterator的区别 判断是否为RandomAccess 小白学Java:奇怪的RandomAccess 我们之前在分析那三个集合源码的时候,曾经说到:ArrayList和Vector继承了 RandomAccess 接口,但是LinkedList并没有,我们还知道继承了这个接口,就意味着其中元素支持 快速随机访问(fast random access) 。 RandomAccess是个啥 出于好奇,我特意去查看了RandomAccess的官方文档,让我觉得异常惊讶的是!这个接口中啥也没有!是真的奇怪!(事实上和它类似的还有 Cloneable 和 java.io.Serializable ,这俩之后会探讨)只留下一串冰冷的英文。 Marker interface used by List implementations to indicate that they support fast (generally constant time) random access . The primary purpose of this interface is to allow generic algorithms to alter their behavior to provide

C#数组和集合类详解

感情迁移 提交于 2020-01-20 18:34:48
一.数组 变量是程序运行时在内存中存储发生变化的容器。 变量可以存储单个数据,而数组可以存储多个变量,并且互不干扰,互不影响,和谐共处。 数组的特点:长度固定,类型相同。 二.数组的分类 一维数组,二维数组,多维数组,不规则数组 三.数组的应用 创建: int[] vs = new int[5]; 赋值: vs[0] = 5; 应用 四.声明数组 //定义一个已知长度的一维数组 int [ ] arr = new int [ 100 ] ; //定义一个未知长度并使用对象初始化器直接赋值int string person_Names = new string [ ] { "张三" , "李四" , "王五" , "刘涛" } ; 五.C#多维数组 C#支持多维数组,多维数组又称为矩阵数组。 声明一个string变量的多维数组 string [ , ] names 声明一个int类型的多维数组: int[,,] m 二维数组 :多维数组最简单的形式就是二维数组。一个二维数组在本质上可以被认为是一个带有X,Y的表格。 int[,] a=new int[3,4]{{0,1,2,4}{5,6,7,8}}; 可以通过唯一索引(即行索引和列索引来访问数据) 使用循环来处理二维数组: //定义一个多维数组,二行四列 int [ , ] vs = new int [ 2 , 4 ] { { 0 ,

lintcode:子数组之和为0

一个人想着一个人 提交于 2020-01-20 17:58:43
题目: 子数组之和 给定一个整数数组,找到和为零的子数组。你的代码应该返回满足要求的子数组的起始位置和结束位置 样例 给出 [-3, 1, 2, -3, 4] ,返回 [0, 2] 或者 [1, 3]. 解题: 更新 子树的和是0,根据给的例子: [-3, 1, 2, -3, 4], 其累加和【-3,-2,0,-3,1】中心出现了一个数0 ,同时发现两个-3,第一个-3开始到第二个-3之前的部分就是这个子数组 数组【1,2,3,-5,3】,其累加和【1,3,6,1,5】,两个1之间的部分就是答案,根据元素数组:不包括第一个1的位置,包括第二个1的位置 所以:计算累加和,当和的值之前已经出现了,这个区间内的数就是子数组的起始id 注意:当包括0位置的时候,包括0位置,不包括最后一个位置 当不包括0位置的时候,包括上一个数位置,不包括当前位置 这个时候需要加入一个值防止是第一个数,put(0,-1),表示还没有数的时候数是0,起始位置是-1,这样当包括0位置的情况,转化为不包括0的情况 public class Solution { /** * @param nums: A list of integers * @return: A list of integers includes the index of the first number * and the index of

ArrayList和LinkedList,LinkedList的新增真的比ArrayList要快吗?

和自甴很熟 提交于 2020-01-20 15:25:49
常说,ArrayList的查询会更快,LinkedList的新增和删除更快 今天闲来无事测试一下,真的如此吗? 代码如下 执行结果如下 欸?这就很奇怪了,不是说好LinkedList会比ArrayList更快吗? 那我们换个方式测试一下 因为从前部插入的速度比从后部插入慢的多,为了减少等待时间,我们把插入的数据量减少了一些 结果如下 结果很明显,从前部插入,LinkedList的速度完爆ArrayList 总结:所以这个说法不能说不对,只能说不准确 ArrayList的插入速度在从后部插入的情况下和LinkedList差别不是很大,如果数据量非常大的情况下,ArrayList会更占优势一些 而从前部插入的情况下,LinkedList就完爆ArrayList了 以上 来源: CSDN 作者: 王花花的饲养员 链接: https://blog.csdn.net/a316468580/article/details/104050782

栈实现综合计算器(中缀表达式),前缀,中缀,后缀表达式,逆波兰计算器

房东的猫 提交于 2020-01-20 12:49:28
思路: 代码:实现多位数的运算 public class Calculator { public static void main(String[] args) { //根据前面老师思路,完成表达式的运算 String expression = "7*2*2-5+1-5+3-4"; // 15//如何处理多位数的问题? //创建两个栈,数栈,一个符号栈 ArrayStack2 numStack = new ArrayStack2(10); ArrayStack2 operStack = new ArrayStack2(10); //定义需要的相关变量 int index = 0;//用于扫描 int num1 = 0; int num2 = 0; int oper = 0; int res = 0; char ch = ' '; //将每次扫描得到char保存到ch String keepNum = ""; //用于拼接 多位数 //开始while循环的扫描expression while(true) { //依次得到expression 的每一个字符 ch = expression.substring(index, index+1).charAt(0); //判断ch是什么,然后做相应的处理 if(operStack.isOper(ch)) {//如果是运算符 /

承上(顺序表,链表)启下(泛型)

无人久伴 提交于 2020-01-20 03:11:51
若要在三个函数里完成一项功能: 例如之前的" 复杂链表的复制 ": Main:负责测试:1>测试用例编写 2>测试数据的构造 3>测试数据打印 Solution:解决明确的问题 Node:链表的结点 * * Main . java : * * public class Main { public static void main ( String [ ] args ) { Solution solution = new Solution ( ) ; //创建一个solution对象 testComplexListCopy ( solution ) ; //复杂链表的复制 } private static void testComplexListCopy ( Solution solution ) { //复杂链表的复制,这只是测试, //并不是具体的方法,所以不用要返回值 // 1. 构建测试数据 CNode head = createComplexList1 ( ) ; // 2. 进行测试 CNode resultHead = solution . copy ( head ) ; // 3. 对测试结果进行打印 printCList ( resultHead ) ; } // CNode 必须有一个构造方法,形参是 int val // 并且,初始化后,next 和

JAVA 集合

别说谁变了你拦得住时间么 提交于 2020-01-19 21:52:03
JAVA集合—list集合 什么是集合 集合可以看作是一种容器,用来存储对象信息。所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下。Java集合类主要由两个根接口Collection和Map派生出来的,Collection派生出了三个子接口:List、Set、Queue(Java5新增的队列),因此Java集合大致也可分成List、Set、Queue、Map四种接口体系, (注意:Map不是Collection的子接口) 以下开始讲解一些常用集合 list集合 List继承于Collection接口 List接口对Collection进行了简单的扩充 它的具体实现类常用的有ArrayList和LinkedList。你可以将任何东西放到一个List容器中,并在需要时从中取出。ArrayList从其命名中可以看出它是一种类似数组的形式进行存储,因此它的随机访问速度极快,而LinkedList的内部实现是链表,它适合于在链表中间需要频繁进行插入和删除操作。在具体应用时可以根据需要自由选择。前面说的Iterator只能对容器进行向前遍历,而ListIterator则继承了Iterator的思想,并提供了对List进行双向遍历的方法。List的功能   List的基本用法事相当将但的。虽然绝大多数时候,你只是用add()加对象

C# 数组、ArrayList、List、Dictionary的用法与区别

耗尽温柔 提交于 2020-01-19 20:22:08
原文链接 https://blog.csdn.net/rvrnld5t/article/details/54973831 前言   在工作中经常遇到C#数组、ArrayList、List、Dictionary存取数据,但是该选择哪种类型进行存储数据,对于初学者的我一直不知道该怎么取舍。于是抽空好好看了下他们的用法和比较,在这里总结下来,后面有需要改进的再更新。 初始化 数组: int[] buff = new int[6]; ArrayList: ArrayList buff = new ArrayList(); List: List<int> buff = new List<int>(); Dictionary: Dictionary<int,string> buff = new Dictionary<int,string>; 分析比较    从上面初始化的几种类型可以看出,他们都属于引用类型。其中数组、List、Dictionary在初始化的时候需要指定其元素类型,而ArrayList不需要指定类型。而在其中只有数组在初始化时设置了其大小。   数组:在初始化时必须指定其大小和类型,他在内存中是连续存储的,所以可以看出数组的索引速度是非常快的。在确定了数组的长度和类型后,选择数组存储数据是比较好的选择。不适合插入操作。   ArrayList

从尾到头打印链表

只愿长相守 提交于 2020-01-19 17:35:26
从尾到头打印链表 题目描述 输入一个链表,按链表 从尾到头 的顺序返回一个ArrayList 看到这道题,很多人的第一反应是从头到尾的输出将会比较简单,于是我们很自然的想把链表中连接节点的指针反转过来,改变链表的方向,然后就可以从头到尾输出了。但该方法会改变原有链表的结构,是否允许在打印链表的时候修改链表的结构?这取决于面试官的要求。 思路分析 思路一:使用栈 遍历的顺序时从头到尾,可输出的顺序确是从尾到头。* 也就是说: 第一个遍历的节点最后一个输出;而最后一个遍历的节点第一个输出 ; ​ 这就是典型的 先进后出 。 ​ 我们可以使用 栈 这种顺序; ​ 每经过一个节点的时候,把该节点放入栈中。 ​ 当遍历完整个链表后,再从 栈顶开始逐个输出节点的值 ,此时输出节点的顺序已经反转股哟开了* /** * @param listNode * @return * 使用栈 :数据结构 * 遍历的顺序时从头到尾,可输出的顺序确是从尾到头。 * 也就是说:第一个遍历的节点最后一个输出;而最后一个遍历的节点第一个输出; * 这就是典型的先进后出。我们可以使用 栈 这种顺序 * 每经过一个节点的时候,把该节点放入栈中。当遍历完整个链表后,再从栈顶开始逐个输出节点的值,此时输出节点的顺序已经反转股哟开了 * */ public static ArrayList < Integer >