arraylist

大四Java复习笔记之Java基础

落爺英雄遲暮 提交于 2020-02-28 22:47:26
一、static和final 学习Java那么久,好像自己就没有怎么用过final,所以对fianl的理解不够。final不但出现在变量的修饰里面,还可以出现在方法和类的修饰。final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。final方法锁定方法,子类不能覆盖修改方法,同时方法会高效。final变量final修饰的成员变量表示常量,只能被赋值一次,赋值后值无法改变,final是指引用的变量不能不能变,但是引用所指向的对象中的内容可以变,同时如果是null的final变量可以赋值一次。 二、一个“.java”文件可以包含多个类 可以有多个类,不过只能有一个“public”的类,而且名字跟文件名一致。 三、&和&& &和&&都可以作为逻辑运算的与的运算符。但是&&会出现短路功能,也就是说如果前面的条件不成立的时候,后面的条件不会执行,例如:(1==2&&j++>1)。 &还可以作为位运算,&表示按位与运算(相同位的两个数字都为1,则为1;若有一个不为1,则为0)。 四、integer和int int是Java的8种原始数据类型之一。Java为每个原始数据提供封装类,integer是Java为int提供的封装类。int的默认值是0,而integer的默认值是null。 五、Java中string的创建

LinkList,ArrayList,Vector

社会主义新天地 提交于 2020-02-28 22:00:41
1,LinkList (1)类声明:public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, Serializable (2)结构:链表 (3)插入和删除的速度比arraylist快,查询比arraylist慢一些 (4)线性非安全(没有同步),可以通过Collections.synchronizedList(new LinkedList(...));达到同步 (5)值可以为null (6)取得顺序跟存的顺序一致 2,ArrayList (1)public class ArrayList<E> extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, Serializable (2)结构:可变大小的数组 (3)插入和删除的速度比LinkList慢,查询比LinkList快一些 (4)线性非安全 (5)值可以为空 (6)无序的 3,Vector (1)public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable (2

返回某集合的所有子集

跟風遠走 提交于 2020-02-28 21:41:51
/** * 功能:返回某集合的所有子集。 */ 三种方法: 方法一:迭代 [java] view plain copy //迭代 /** * 注意:每次加入集合后会改变原来的集合,无法继续从集合中取出元素。 * 必须通过一个中间参数moreSubsets来保存中间结果,最后加入allSubsets。 * @author Lynne * @param set * @param index * @return */ public static ArrayList<ArrayList<Integer>> getSubsets2(ArrayList<Integer> set,int index){ ArrayList<ArrayList<Integer>> allSubsets=new ArrayList<ArrayList<Integer>>(); allSubsets.add(new ArrayList<Integer> ());//加入空集合 while(index<set.size()){ int item=set.get(index); ArrayList<ArrayList<Integer>> moreSubsets=new ArrayList<ArrayList<Integer>>(); for(ArrayList<Integer> subsets:allSubsets){

Java中List的集合

谁说胖子不能爱 提交于 2020-02-28 21:05:00
List集合代表一个元素有序、可重复的集合,集合中的每一个元素都有其对应的顺序索引,List集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。 1.List作为Collection接口的子接口,当然可以使用Collection接口里面的所有的方法。而且由于List集合有序他还有一些新方法,void add(int index,Object element)将元素element插入到指定的位置;boolean addAll(int index,Collection c)将集合c所包含的所有元素都插入到List集合的index位置处;Object get(int index)返回集合index索引出的元素;int indexOf(Object o)返回对象o在List集合中一次出现的位置索引;int lastIndexOf(Object o)返回对象o在list集合中最后一次出现的位置索引;Object remove(int index)删除并返回index索引处的位置;Object set(int index,Object element)将index出的索引出的元素替换成element对象,返回旧元素;List subList(int formIndex,int toIndex)返回索引formIndex到索引toIndex(不包含)处所有集合元素;void

Java基础复习-----集合Vector

 ̄綄美尐妖づ 提交于 2020-02-28 21:04:41
Vector与ArrayList差不多,只不过Vector是线程安全,这也意味着性能会比ArraList差 1、定义 与ArrayList继承、实现接口都一样 2.内部使用数组对象进行存储 使用无参构造方法初始化时,数组大小默认为10 ;这一点与ArrayList不同,ArrayList使用无参构造方法初始化默认为空数组,大小为0; 3.扩容字段 capacityIncrement 正常情况下扩容机制为新的集合大小 = 原来的集合大小+capacityIncrement ,这个与ArrayList不同; ArrayList采用扩容机制为 新的集合大小 = 原来的集合大小+ 原来的集合大小/2 int newCapacity = oldCapacity + (oldCapacity >> 1); 4.部分方法 setSize() 改变Vector的集合大小,如果newSize大于Vector实际大小会进行Vector扩容,相反,会抛弃newSzie位置索引(包括newSize位置)之后的元素 Vector中大部分方法都如上使用synchronized关键字,进行线程同步,所以性能会比ArrayList差;因为ArrayList是非线程安全的;如果要使用线程安全的List,推荐使用 Collections.synchronizedList(list) ;

集合ArrayList

百般思念 提交于 2020-02-28 20:35:01
ArrayList ArrayList 实现于 List, RanomAccess 接口。可以插入空数据,也支持随机访问 ArrayList相当于动态数据,其中最重要的两个属性分别是:elementData数组,以及size大小,在调用add()方法的时候: public boolean add(E e){ ensureCapactiyInternal(size +1); elementData[size++] =e; retrun true; } 1,首先进行扩容校验 2,将插入的值放到尾部,并将size+1. 如果调用add (index ,e)在指定位置添加的话: pubilc void add(int index ,E element){ rangeCheckForAdd(index); ensureCapacityInternal(size + 1); //复制,向后移动 System.arraycopy(elementData, index, elementData,index +1,size-index) elementData[index] =element; size++; } 1,也是首先扩容校验 2,接着对数据进行复制,目的是把index位置空出来放本次插入的数据,并将后面的数据 向后移动一个位置 其实扩容最终调用的代码: private void grow

返回整数数组中最大数组的和(续,文件读入)

故事扮演 提交于 2020-02-28 20:23:51
这篇博客是在 之前那片博客 的基础上添加了新的要求和改进 题目要求: 1.要求数组从文件读取 2.如果输入的数组很大,并且有很多大的数字,就会产生比较大的结果(参考一下数的溢出),请保证你的程序能正常输出 3.另外如果输入文件的参数有错误,这个程序应该能正常退出,并显示相应的错误信息,任何输入错误都不能导致你的程序崩溃 做题思路: 1.文件读取,使用 InputStreamReader类 按着字符流读取数和 BufferedReader类 从字符输入流中读取文本并缓冲字符。 2.使用BigInteger来解决大数字溢出的问题 相关学习: https://blog.csdn.net/qq_41668547/article/details/87628618 3.使用try_catch机制,可控出现错误的可能 源代码: package java_study; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigInteger; import java.util.ArrayList; import java

Java集合体系--上

一个人想着一个人 提交于 2020-02-28 18:59:14
文章目录 1、Java集合体系 2、List接口及其实现类 2.1、List 2.2、ArrayList 2.3、LinkedList 3、Set接口及其实现类 3.1、Set 3.2、HashSet 3.3、LinkedHashSet 3.4、TreeSet 4、Queue 1、Java集合体系   Java集合体系主要由两个接口派生而出:Collection和Map。本篇博文主要讲述Collection的继承体系,Collection是一个接口,定义了一系列的集合操作方法,其实现类主要是重写抽象方法和定义自己特定的方法。该体系的实现类都是直接或间接实现Collection的三个子接口:List、Queue、Set。我们常用的实现类主要有ArrayList、LinkedList、TreeSet、HashSet。 2、List接口及其实现类 2.1、List List接口的主要方法如下: public void add(int index, E element) :将指定的元素,添加到该集合中的指定位置上。 public E get(int index) :返回集合中指定位置的元素。 public E remove(int index) : 移除列表中指定位置的元素, 返回的是被移除的元素。 public E set(int index, E element)

泛化动态数组

我只是一个虾纸丫 提交于 2020-02-28 14:26:44
泛化动态数组 动态数组的核心思想是在存储数据时动态的管理数组元素占用的内存,通过调用动态数组的类方法来对数组中的数据进行 增删改查 操作。最初我们为数组申请10个元素的空间,放我们不断向数组中添加数据时,会自动的申请更大的空间(这里申请的是原本容量的1.5倍,用的是移位操作),将原来内存块的数据拷贝到新的更大的内存块中。当我们删除数据,当空闲内存是总容量的一半且不小于最小容量(10)时,将自动对数组内存缩容操作。 抽向数据类型(ADT) :(linearList.h) /************************************************************************* > File Name : linearList.h > Author : Harold > Mail : 2106562095@qq.com > Github : www.github.com/Haroldcc > Created Time : 2020年02月26日 11时02分58秒 ************************************************************************/ /***** 线性表的抽象定义 *****/ # ifndef LINEARLIST_H # define LINEARLIST_H #

ArrayList底层原理详解

心已入冬 提交于 2020-02-28 13:37:33
前言: 这里我用的JDK8 在讲ArrayList之前,先讲简单讲下List List集合代表一个有序集合,集合中每个元素都有其对应的顺序索引,它继承Collection接口,可以定义一个允许重复的有序集合 List接口的特点: 1、有下标 2、有顺序 3、能重复 实现List接口的集合有: ArrayList、LinkedList、Vector、Stack 在这篇文章,只详细讲ArrayList底层 ArrayList 实现了List接口,也是最常用的一种集合 特点:底层数据结构是数组,查询快,增删除慢,线程不安全,效率高 优点:操作读取操作效率高,底层是基于 数组 实现的,可以为null值,可以 允许重复元素,有序,异步 。 缺点:由于它是底层是动态数组实现的,不适合频繁的对元素的进行插入和删除操作,因为每次插入和删除都需 要移动数组中的元素,操作慢且复杂。 底层原理 我们以下的代码进行讲解,且从debug模式进入底层 import java . util . ArrayList ; public class ArrayListDemo { public static void main ( String [ ] args ) { ArrayList < Integer > arryayList = new ArrayList < Integer > ( ) ;