arraylist

How to find the max value of an Arraylist and two of its Index position using Java

大兔子大兔子 提交于 2019-12-26 10:10:02
问题 How can I find the maximum value from an Arraylist with its index positions? ArrayList ar = new ArrayList(); ar.add(2); // position 0 ar.add(4); // position 1 ar.add(12); // position 2 ar.add(10); // position 3 ar.add(12); // position 4 String obj = Collections.max(ar); int index = ar.indexOf(obj); System.out.println("obj max value is " + obj + " and index position is " + index); The above program just returns the output as the first max object with value 12 and index position 2 . But my

Java面试篇:手撕hashmap与ArrayList,LinkedList。

◇◆丶佛笑我妖孽 提交于 2019-12-26 09:56:26
这两个月来第一次8点下班,没有到12点甚至有点不习惯,马上就要到跳槽旺季,那么我给大家整理一套最常问的几个集合面条题,废话不多说,直接进入正题。 一、HASHMAP 1.如果想要了解hashmap首先要了解其数据结构 ①.hashmap数据结构是什么? hashmap数据结构中有数组和链表来实现对数据的存储 数组:数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1),随机读取效率很高。因为数组是连续的,知道每一个数据的内存地址,可以直接找到给定地址的数据,但是插入数据和删除数据效率低,插入数据时,这个位置后面的数据在内存中都要向后移。所以数组的特点是:寻址容易,插入和删除困难; 链表:链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N),链表的插入删除元素相对数组较为简单,不需要移动元素,且较为容易实现长度扩充,但是寻找某个元素较为困难。所以链表的特点是:寻址困难,插入和删除容易。 哈希表:那么我们能不能综合两者的特性,做出一种寻址容易,插入删除也容易的数据结构?答案是肯定的,这就是我们要提起的哈希表。哈希表((Hash table)既满足了数据的查找方便,同时不占用太多的内容空间,使用也十分方便。 哈希表有多种不同的实现方法,我接下来解释的是最常用的一种方法—— 拉链法,我们可以理解为“链表中的数组“

ArrayList源码的 elementData.getClass() != Object[].class

做~自己de王妃 提交于 2019-12-26 09:52:57
/*--> */ /*--> */ 1. 放出源码 2. elementData与Object[]   elementData的定义如下 transient Object[] elementData; // non-private to simplify nested class access   请看如下代码 package test; public class UserTest2 { public static void main(String[] args) { User[] users = new User[]{ new User(1, "admin", "admin@qq.com"), new User(2, "maco", "maco@qq.com"), new User(3, "kitty", "kitty@163.com") }; Object[] target = users; System.out.println(target.getClass()); // class [Ltest.User; target[0] = new Object(); // java.lang.ArrayStoreException: java.lang.Object } }   显然直接将非Object[]类型数组赋予Object[]类型, 相当于将子类对象赋予父类变量,

java知识系列之集合理论篇

杀马特。学长 韩版系。学妹 提交于 2019-12-26 04:55:56
本文主要综合介绍java集合中比较重要的一些概念和实现。如下图 基础部分 Collection List :接口实例存储的是 有序的 , 可以重复 的元素。 ArrayList - 底层使用数组 - 读取速度快,增删速度慢 - 不是线程安全的,只能在单线程环境下,多线程环境下可以考虑用collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发CopyOnWriteArrayList类。 - 当容量不够时,当前容量*1.5+1 LinkedList 底层使用双向链表数据结构 读取速度慢,增删快 线程不安全 implements List, Deque。实现List接口,能对它进行队列操作,即可以根据索引来随机访问集合中的元素。同时它还实现Deque接口,即能将LinkedList当作双端队列使用。自然也可以被当作"栈来使用" Vector 底层使用数组 读取速度快,增删慢 线程安全,效率低 容量不够时,默认扩展一倍 Stack Stack是Vector提供的一个子类,用于模拟"栈"这种数据结构(LIFO后进先出 小结 java提供的List就是一个"线性表接口",ArrayList(基于数组的线性表)、LinkedList(基于链的线性表)是线性表的两种典型实现 Queue代表了队列

ArrayList和LinkedList区别

纵饮孤独 提交于 2019-12-26 03:53:41
一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。 ArrayList和LinkedList是两个集合类,用于存储一系列的对象引用(references)。例如我们可以用ArrayList来存储一系列的String或者Integer。那么ArrayList和LinkedList在性能上有什么差别呢?什么时候应该用ArrayList什么时候又该用LinkedList呢? 一.时间复杂度 首先一点关键的是,ArrayList的内部实现是基于基础的对象数组的,因此,它使用get方法访问列表中的任意一个元素时(random access),它的速度要比LinkedList快。LinkedList中的get方法是按照顺序从列表的一端开始检查,直到另外一端。对LinkedList而言,访问列表中的某个指定元素没有更快的方法了。 假设我们有一个很大的列表,它里面的元素已经排好序了,这个列表可能是ArrayList类型的也可能是LinkedList类型的

ArrayList与LinkedList的区别

荒凉一梦 提交于 2019-12-26 03:50:56
说白了,就是数据结构中的顺序存储和链式存储的区别 一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态 数组 的数据结构,LinkedList基于 链表 的数据结构。 2.对于随机访问get和set,ArrayList绝对优于LinkedList,因为LinkedList要移动指针。 3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。 ArrayList其实是包装了一个数组 Object[],当实例化一个ArrayList时,一个数组也被实例化,当向ArrayList中添加对象时,数组的大小也相应的改变。这样就带来以下缺点: 快速随即访问 你可以随即访问每个元素而不用考虑性能问题,通过调用get(i)方法来访问下标为i的数组元素。 向其中添加对象速度慢 当你创建数组是并不能确定其容量,所以当改变这个数组时就必须在内存中做很多事情。 操作其中对象的速度慢 当你要想数组中任意两个元素中间添加或者删除对象时,数组需要移动所有后面的对象。 LinkedList LinkedList是通过节点直接彼此连接来实现的。每一个节点都包含前一个节点的引用,后一个节点的引用和节点存储的值。当一个新节点插入时,只需要修改其中保持先后关系的节点的引用即可,当删除记录时也一样。这样就带来以下有缺点

JAVA基础:ArrayList和LinkedList区别

99封情书 提交于 2019-12-26 03:47:23
1.ArrayList是实现了 基于动态数组 的数据结构,LinkedList基于 链表 的数据结构。 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3.对于在指定index位置新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。 4.ArrayList中的操作不是线程安全的!所以,建议在单线程中才使用ArrayList,而在多线程中可以选择Vector或者CopyOnWriteArrayList。LinkedList线程安全的处理方法     方法一:List<String> list = Collections.synchronizedList(new LinkedList<String>());     方法二:将LinkedList全部换成ConcurrentLinkedQueue 为什么在创建ArrayList对象时要初始化默认容量?    其实就是为了避免扩容,ArrayList扩容方法,这里 ensureCapacityInternal 才是ArrayList内部调用的扩容方法 /** * 公有方法 */public void ensureCapacity(int minCapacity) { int minExpand = (elementData

ArrayList和LinkedList区别

丶灬走出姿态 提交于 2019-12-26 03:45:04
ArrayList,LinkedList,Vestor这三个类是java.util.List接口的实现类 区别:   1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。 总结 : ArrayList和LinkedList在性能上各有优缺点,都有各自所适用的地方,如下: 1.对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的。对 ArrayList而言,主要是在内部数组中增加一项,指向所添加的元素,偶尔可能会导致对数组重新进行分配;而对LinkedList而言,这个开销是 统一的,分配一个内部Entry对象。 2.在ArrayList的中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动;而在LinkedList的中间插入或删除一个元素的开销是固定的。 3.LinkedList不支持高效的随机元素访问。 4.ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间 可以这样说

java中ArrayList介绍及方法使用

南笙酒味 提交于 2019-12-26 02:02:38
ArrayList: 是java集合中的一种数据结构,继承List,实现了List的接口。底层是给予数组实现容量大小动态变化,其中还实现了序列化的接口Serializable接口。所以ArrayList支持快速访问、赋值、序列化的操作。ArrayList是通过数组去保存数据的,当构造ArrayList时,若是默认构造函数,则容量大小是10.当容量不足时,ArrayList会重新设置容量:新的容量 = 原始容量x3/2 +1 .ArrayList实现java.io.Serializable的方式。当写入到输出流时,先写入“容量”,再依次写入“每一个元素”;当读出输入流时,先读取“容量”,再依次读取“每一个元素”。 ArrayList的遍历源代码: package 数据结构测试; import java.util.ArrayList; import java.util.Iterator; public class Test_5 { public static void main(String[] args) { ArrayList list = new ArrayList(); for(int i = 0 ; i<10000000;i++) { list.add(i); } INT(list); For(list); Foreach(list); } private static

How to change array list to string array for using Universal Image Loader?

两盒软妹~` 提交于 2019-12-26 01:54:57
问题 I am a Novice of android. I just try to learn how to use Universal Image Loader . I find that the url of the images in Universal Image Loader are set statically or preset in String[] IMAGES . But I would like to change those image from URL . So I am done with parsing the XML and try to get those data from XML Web service . However, I don't know how to change array list to string array. Can someone teach me? The xml web service code as follow: class showCategoryTask extends AsyncTask<Void,