arraylist

数组和列表有什么区别?什么时候应该使用Array而不是ArrayList

限于喜欢 提交于 2020-02-13 21:50:03
1、存储内容比较: Array 数组可以包含基本类型和对象类型, ArrayList 却只能包含对象类型。 Array 数组在存放的时候一定是同种类型的元素。ArrayList 就不一定了 。 2、空间大小比较: Array 数组的空间大小是固定的,所以需要事前确定合适的空间大小。 ArrayList 的空间是动态增长的,而且,每次添加新的元素的时候都会检查内部数组的空间是否足够。 3.方法上的比较: ArrayList 方法上比 Array 更多样化,比如添加全部 addAll()、删除全部 removeAll()、返回迭代器 iterator() 等。 适用场景: 如果想要保存一些在整个程序运行期间都会存在而且不变的数据,我们可以将它们放进一个全局数组里, 但是如果我们单纯只是想要以数组的形式保存数据,而不对数据进行增加等操作,只是方便我们进行查找的话,那么,我们就选择 ArrayList。 如果我们需要对元素进行频繁的移动或删除,或者是处理的是超大量的数据,那么,使用 ArrayList 就真的不是一个好的选择,因为它的效率很低,使用数组进行这样的动作就很麻烦,那么,我们可以考虑选择 LinkedList。 来源: CSDN 作者: 键盘与我的故事 链接: https://blog.csdn.net/weixin_43398418/article/details

ArrayList

99封情书 提交于 2020-02-13 17:26:47
package other ; import java . util . ArrayList ; import java . util . Collections ; import java . util . Comparator ; import java . util . Iterator ; public class Test { /** * @param args */ public static void main ( String [ ] args ) { //定义长度为10的数组 ArrayList < Integer > arrayList = new ArrayList < Integer > ( 10 ) ; //添加元素 for ( int i = 0 ; i < 10 ; i ++ ) { arrayList . add ( i ) ; } //将ArrayList实例的容量设置为集合的当前大小,最小化ArrayList的容量 arrayList . trimToSize ( ) ; System . out . println ( "原始数组:" + arrayList ) ; Collections . reverse ( arrayList ) ; System . out . println ( "反转数组:" + arrayList ) ;

Java 8 lambda create list of Strings from list of objects

依然范特西╮ 提交于 2020-02-13 04:55:32
问题 I have the following qustion: How can I convert the following code snipped to Java 8 lambda style? List<String> tmpAdresses = new ArrayList<String>(); for (User user : users) { tmpAdresses.add(user.getAdress()); } Have no idea and started with the following: List<String> tmpAdresses = users.stream().map((User user) -> user.getAdress()); 回答1: You need to collect your stream into a List: List<String> adresses = users.stream() .map(User::getAdress) .collect(Collectors.toList()); For more

Java 8 lambda create list of Strings from list of objects

你离开我真会死。 提交于 2020-02-13 04:55:30
问题 I have the following qustion: How can I convert the following code snipped to Java 8 lambda style? List<String> tmpAdresses = new ArrayList<String>(); for (User user : users) { tmpAdresses.add(user.getAdress()); } Have no idea and started with the following: List<String> tmpAdresses = users.stream().map((User user) -> user.getAdress()); 回答1: You need to collect your stream into a List: List<String> adresses = users.stream() .map(User::getAdress) .collect(Collectors.toList()); For more

十大排序算法

a 夏天 提交于 2020-02-13 02:02:07
好好学习算法基础 0、排序算法说明 0.1 排序的定义 对一序列对象根据某个关键字进行排序。 0.2 术语说明 稳定 :如果a原本在b前面,而a=b,排序之后a仍然在b的前面; 不稳定 :如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面; 内排序 :所有排序操作都在内存中完成; 外排序 :由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行; 时间复杂度: 一个算法执行所耗费的时间。 空间复杂度 :运行完一个程序所需内存的大小。 0.3 算法总结 图片名词解释: n: 数据规模 k: “桶”的个数 In-place: 占用常数内存,不占用额外内存 Out-place: 占用额外内存 0.5 算法分类 0.6 比较和非比较的区别 常见的 快速排序、归并排序、堆排序、冒泡排序 等属于 比较排序 。 在排序的最终结果里,元素之间的次序依赖于它们之间的比较。每个数都必须和其他数进行比较,才能确定自己的位置。 在 冒泡排序 之类的排序中,问题规模为n,又因为需要比较n次,所以平均时间复杂度为O(n²)。在 归并排序、快速排序 之类的排序中,问题规模通过 分治法 消减为logN次,所以时间复杂度平均 O(nlogn) 。 比较排序的优势是,适用于各种规模的数据,也不在乎数据的分布,都能进行排序。可以说, 比较排序适用于一切需要排序的情况。 计数排序、基数排序

对集合元素进行处理:传统方式和Stream方式的对比

做~自己de王妃 提交于 2020-02-13 01:51:23
题目 现在有两个 ArrayList 集合存储队伍当中的多个成员姓名,要求使用传统的for循环(或增强for循环)依次进行以下若干操作步骤: 第一个队伍只要名字为3个字的成员姓名;存储到一个新集合中。 第一个队伍筛选之后只要前3个人;存储到一个新集合中。 第二个队伍只要姓张的成员姓名;存储到一个新集合中。 第二个队伍筛选之后不要前2个人;存储到一个新集合中。 将两个队伍合并为一个队伍;存储到一个新集合中。 根据姓名创建 Person 对象;存储到一个新集合中。 打印整个队伍的Person对象信息。 两个队伍(集合)的代码如下: import java.util.ArrayList; import java.util.Collections; public class DemoArrayListNames { public static void main(String[] args) { //第一支队伍 ArrayList<String> one = new ArrayList<>(); Collections.addAll(one, "迪丽热巴", "宋远桥", "苏星河", "石破天", "石中玉", "老子", "庄子", "洪七公"); //第二支队伍 ArrayList<String> two = new ArrayList<>(); Collections.addAll

大一暑假第七周周进度总结报告

对着背影说爱祢 提交于 2020-02-12 03:32:15
java学习了异常处理和文件流。 一.异常处理:1.避免问题存在:判断索引是否存在 用if判断 ArrayList list=new ArrayList();       if(0<list.size()){           System.out.println(list.get(0));}       2.出现异常解决问题方法:学会异常捕捉语句,try{容易出错的语句}是“试”的意思,catch(封装成对象,并传递给这个参数)作为“捕捉”。        catch语句可以有多个。         try{           ArrayList list=new ArrayList();           System.out.println(list.get(0)):         }catch(IndexOutOfBoundsException e){           e.printStackTrace();         }       java里面把所有的异常类封装成了Exception类,所有的异常类都继承自Exception。       最后还有一个finally语句根据需求进行选择性添加,无论代码是否异常,finally语句都会执行。  二.文件流:   文件: 文件       文本文件 , 非文本文件(二进制文件)      文件夹(目录)  

手写ArrayList实例

心已入冬 提交于 2020-02-12 02:37:08
效果 代码块: package com.example.javase; /** * @Description: ArrayList demo * @author: YZD * @Date: 2020-02-11 15:48 * @Version: 1.0 */ public class arrayListDemo<E> { /** * 特点: * 查询效率高(index) * 增删效率低(System.arraycopy) * 线程不安全 * <p> * 数组扩容 */ private Object[] elementData; private int size = 0; //默认长度 private static final int DEAFULT_CAPACITY = 10; public arrayListDemo() { elementData = new Object[DEAFULT_CAPACITY]; } public Object[] getElementData() { return elementData; } public void setElementData(Object[] elementData) { this.elementData = elementData; } public void add(E object) { //扩容 if (size

Java集合常见面试题

江枫思渺然 提交于 2020-02-12 02:36:28
适可而止,见好就收 来源主要是 牛客 的Java实习面经。下面的回答直接背就可以,需要一定的Java基础,适合春招实习的同学,但是我会在每个问题下把有助于理解的博客贴出来。如果发现有问题欢迎私聊我或留言我会在下面更新 Map 1. Map的底层结构 腾讯19年秋招 这个题乍一看没有什么思路(因为Map是个集合,当然也有可能是我记错了),所以我们可以先介绍一下Map然后转到HashMap中 Map是一种使用键值对存储的集合。Map会维护与Key有关联的值。两个Key可以引用相同的对象,但Key不能重复,典型的Key是String类型,但也可以是任何对象。 在整个Map系列中,AbstractMap抽象类实现了Map,SortedMap接口继承了Map。而我们常用的HashMap,HashTable,TreeMap和ConcurrentHashMap有继承了AbstractMap类。 其中,HashTable和ConcurrentHashMap是线程安全的。前者是通过synchronized实现的,后者是通过AQS实现的。其中要注意HashTable不能存空值,HashMap是线程不安全的,key可以为空。TreeMap通过二叉树算法实现有序集合,它实现了SortedMap接口 2. HashMap的原理 阿里17年实习,小米19年秋招本科,滴滴19年秋招本科,网易19年秋招本科

day24_Stream流、方法引用

南楼画角 提交于 2020-02-11 22:28:07
Stream流 说到Stream便容易想到I/O Stream,而实际上,谁规定“流”就一定是“IO流”呢? 在Java 8中 ,得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念, 用于解决已有集合类库既有的弊端。 由来 传统集合的多步遍历代码 几乎所有的集合(如 Collection 接口或 Map 接口等)都支持直接或间接的遍历操作。而当我们需要对集合中的元素进行操作的时候,除了必需的添加、删除、获取外,最典型的就是集合遍历。例如: package demo01; import java.util.ArrayList; import java.util.List; public class Demo01ForEach { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("张无忌"); list.add("周芷若"); list.add("赵敏"); list.add("张强"); list.add("张三丰"); for (String name : list) { System.out.println(name); } } } 这是一段非常简单的集合遍历操作:对集合中的每一个字符串都进行打印输出操作。 循环遍历的弊端 Java