arraylist

Java中的集合

99封情书 提交于 2020-01-29 01:53:40
Java中的集合 集合就像是一个购物车,可以将购买的所有商品的存放在一个统一的购物车中 集合的概念 现实生活: 很多的事物凑在一起 数学中的集合: 具有共同属性的事物的总体 Java中的集合类: 是一种工具类,是一种容器,里面可以存储任意数量的相同属性的类。 集合的作用 在类的内部对数据进行组织 简单快速的搜索大数量的条目 有的集合借口,提供了一系列排列有序的元素,并且可以在序列中快速地插入或者删除元素 有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这 个关键字可以是任意类型 两个集合框架 Collection List Queue Set List、Queue、Set的区别: List和Queue中的元素是有序排列的 Set中的元素是无序排列的 graph TD Collection(Collection) --> List(List) List(List) -.-> ArrayList[ArrayList] List(List) -.-> LinkedList[LinkedList] Collection(Collection) --> Queue(Queue) Queue(Queue)-.-> LinkedList[LinkedList] Collection(Collection) --> Set(Set) Set(Set) -.->

作业三

丶灬走出姿态 提交于 2020-01-29 00:52:59
作业地址: GitHub项目地址:https://github.com/pbnbpb/WordCount.git 结对伙伴博客地址: https://www.cnblogs.com/Xl2248570171/p/10636087.html PSP表格: PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 10 15 · Estimate · 估计这个任务需要多少时间 10 15 Development 开发 200 300 · Analysis 需求分析 (包括学习新技术) 30 100 · Design Spec · 生成设计文档 · Design Review · 设计复审 (和同事审核设计文档) · Coding Standard 代码规范 (为目前的开发制定合适的规范) 25 25 Design 具体设计 10 15 Coding 具体编码 180 300 Code Review 代码复审 30 45 Test 测试(自我测试,修改代码,提交修改) 15 25 Reporting 报告 20 30 Test Report 测试报告 10 20 Size Measurement 计算工作量 Postmortem & Process Improvement Plan 事后总结,

4、剑指offer——从尾到头打印链表

▼魔方 西西 提交于 2020-01-28 22:22:56
题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 思路:   1.如果链表为空,则直接返回空的ArrayList   2.如果链表非空,遍历链表,按照顺序将链表中的数据添加到ArrayList中   3.反转ArrayList(倒序输出)(倒序方法,文末补充) /** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val) { * this.val = val; * } * } * */ import java.util.ArrayList; import java.util.Collections; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { //先创建一个空的ArrayList ArrayList arrList = new ArrayList(); if(listNode == null) { return arrList; } //遍历链表 int i = 0; while(listNode.next !=

常用API_1

无人久伴 提交于 2020-01-28 21:25:22
API API(Application Programming Interface),应用程序编程接口。Java API是一本程序员的 字典 ,是JDK中提供给 我们使用的类的说明文档。这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学 习这些类如何使用即可。所以我们可以通过查询API的方式,来学习Java提供的类,并得知如何使用它们。 Scanner类 一个可以解析基本类型和字符串的简单文本扫描器。 例如,以下代码使用户能够从 System.in 中读取一个数: Scanner sc = new Scanner(System.in); int i = sc.nextInt(); 备注:System.in 系统输入指的是通过键盘录入数据。 Scanner使用步骤: 查看类 java.util.Scanner :该类需要import导入后使用。 查看构造方法 public Scanner(InputStream source) : 构造一个新的 Scanner ,它生成的值是从指定的输入流扫描的。 查看成员方法 public int nextInt() :将输入信息的下一个标记扫描为一个 int 值。 匿名对象 创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。虽然是创建对象的简化写法,但是应用场景非常有限。 匿名对象 :没有变量名的对象。

第四篇:走近CopyOnWriteArrayList

跟風遠走 提交于 2020-01-28 18:46:14
CopyOnWriteArrayList简介 熟悉Java开发的童鞋都知道ArrayList是线程不安全的,在多线程的环境下可能会发生fast-fail机制,抛出ConcurrentModificationException异常,虽然也有并发容器Vector,或者采用Collections的synchronizedCollection方法将ArrayList包装成线程安全类,但是这两种方式都是利用synchronized关键字修饰方法,利用独占锁来保证线程安全,由于独占锁在同一时刻只有一个线程能够获取到对象监视器即读写操作不能并行,所以效率不高。而CopyOnWriteArrayList则采用CopyOnWrite的原理来实现的一个线程安全的容器,读写分离,效率高。 环境 本源码基于JDK1.8 fast-fail机制 fast-fail是一种快速失败机制,在容器中有广泛的运用,我们都知道ArrayList是线程不安全的,当多个线程同时对集合进行结构上的修改时,就可能会产生fast-fail机制。 例如:假设存在线程1,线程2,线程1通过Iterator对集合A进行遍历,线程2对集合A进行结构上的修改(不是仅仅修改一个元素),这时候就会产生fail-fast机制,抛出ConcurrentModificationException异常。 原因:线程对容器ArrayList进行修改时

Java中ArrayList和LinkedList区别

北城以北 提交于 2020-01-28 13:19:02
ArrayList和LinkedList的大致区别如下: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。 上代码: 1 static final int N=50000; 2 static long timeList(List list){ 3 long start=System.currentTimeMillis(); 4 Object o = new Object(); 5 for(int i=0;i<N;i++) { 6 list.add(0, o); 7 } 8 return System.currentTimeMillis()-start; 9 } 10 static long readList(List list){ 11 long start=System.currentTimeMillis(); 12 for(int i=0,j=list.size();i<j;i++){ 13 14 } 15 return System.currentTimeMillis()-start; 16 } 17 18

无尽算法之 DFS+回溯算法 暴揍 leetcode.78 子集

删除回忆录丶 提交于 2020-01-28 07:37:14
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 分析: 例如: 输入 [1,2,3] 如果我们要计算子集 那么, 它的每个元素1, 2, 3 都有两种情况: 选择 和 不选择 , 所以直接递归回溯 注意 不选择的情况注意吧temp list 清空 再加上递归跳出条件 (索引不能越界) 搞定! 题解: class Solution { ArrayList results = new ArrayList ( ) ; public List < List < Integer > > subsets ( int [ ] nums ) { results . add ( new ArrayList ( ) ) ; Arrays . sort ( nums ) ; dfs ( new ArrayList ( ) , nums , 0 ) ; return results ; } public void dfs ( List < Integer > temp , int [ ] nums , int i ) { if ( i >= nums . length ) { return

获取文件夹及其子文件夹下的所有文件

旧巷老猫 提交于 2020-01-28 03:37:58
public class FileAccess { //储存所有文件夹名 private ArrayList dirs; public FileAccess() { dirs = new ArrayList(); } //获取所有文件名 private ArrayList GetFileName(string dirPath) { ArrayList list = new ArrayList(); if (Directory.Exists(dirPath)) { list.AddRange(Directory.GetFiles(dirPath)); } return list; } //获取所有文件夹及子文件夹 private void GetDirs(string dirPath) { if (Directory.GetDirectories(dirPath).Length > 0) { foreach (string path in Directory.GetDirectories(dirPath)) { dirs.Add(path); GetDirs(path); } } } /// <summary> /// 获取给出文件夹及其子文件夹下的所有文件名 /// (文件名为路径加文件名及后缀, /// 使用的时候GetAllFileName().ToArray(

Java学习(三)

对着背影说爱祢 提交于 2020-01-28 00:18:34
Java学习(三) 标签(空格分隔): Java 集合框架 java集合类主要有以下几种: List结构的集合类: ArrayList类,LinkedList类,Vector类,Stack类 Map结构的集合类: HashMap类,Hashtable类 Set结构的集合类: HashSet类,TreeSet类 Queue结构的集合 Queue接口 HashMap和Hashtable的区别 HashMap与Hashtable都是java的集合类,都可以用来存放java对象,这是他们的相同点,但是他们也有区别: 一、历史原因: Hashtable 是基于陈旧的Dictionary类的,HashMap是java1.2引进的Map接口的一个实现 二、同步性: Hashtable 是同步的,这个类中的一些方法保证了Hashtable中的对象是线程安全的,而HashMap则是异步的,因此HashMap中的对象并不是线程安全的,因为同步的要求会影响执行的效率,所以如果你不需要线程安全的集合那么使用HashMap是一个很好的选择,这样可以避免由于同步带来的不必要的性能开销,从而提高效率 三、值:HashMap可以让你将空值作为一个表的条目的key或value但是Hashtable是不能放入空值的(null) ArrayList和Vector的区别

泛型与非泛型的区别及详细解释

坚强是说给别人听的谎言 提交于 2020-01-27 18:49:30
使用集合组织相关数据 1:简介 我们都知道数组是一组具有相同数据类型的数据的集合,在程序中可以存储数据,但是数组有一个缺点,即当其中的元素初始化后,要在程序中动态的给数组添加,或删除某个元素是很困难的。那么如何解决这个问题?.NET给我们提供了各种集合对象,如ArrayList和Hashtable。它们都可以很好的进行元素的动态添加,删除等操作。此外还要介绍C#中的一个重要概念——泛型。 2:ArrayList 1:ArrayList非常类似于数组,也有人称它为数组列表,ArrayList是一个可动态维护的集合。数组的容量是固定的,而ArrayList的容量是可以根据需要自动扩充,它的索引会根据程序的扩展而重新进行分配和调整。ArrayList提供了一系列的方法对其中的元素,进行访问增加,删除的操作。 2:和数组类似,ArrayList中存储的数据称为元素;ArrayList可以保存的元素就是ArrayList的容量,其默认初始容量为0;可以通过索引访问ArrayList中的元素,索引从0开始。 3:ArrayList类属于System.Collections命名空间,这个命名空间包含接口和类,这些接口和类定义各种对象(如列表,队列,位数组,哈希表和字典)的集合,ArrayList就属于集合中的一种,因此在使用ArrayList类之前一定要引入System