arraylist

Java面试题-集合框架篇三

感情迁移 提交于 2020-01-08 21:45:11
21、ArrayList和Vector的区别 这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我们以后可以按位置索引号取出某个元素,并且其中的数据是允许重复的,这是与HashSet之类的集合的最大不同处,HashSet之类的集合不可以按索引号去检索其中的元素,也不允许有重复的元素。 ArrayList与Vector的区别主要包括两个方面:. (1)同步性: Vector是线程安全的,也就是说是它的方法之间是线程同步的,而ArrayList是线程序不安全的,它的方法之间是线程不同步的。如果只有一个线程会访问到集合,那最好是使用ArrayList,因为它不考虑线程安全,效率会高些;如果有多个线程会访问到集合,那最好是使用Vector,因为不需要我们自己再去考虑和编写线程安全的代码。 (2)数据增长: ArrayList与Vector都有一个初始的容量大小,当存储进它们里面的元素的个数超过了容量时,就需要增加ArrayList与Vector的存储空间,每次要增加存储空间时,不是只增加一个存储单元,而是增加多个存储单元,每次增加的存储单元的个数在内存空间利用与程序效率之间要取得一定的平衡。Vector默认增长为原来两倍,而ArrayList的增长策略在文档中没有明确规定

学生成绩管理系统

老子叫甜甜 提交于 2020-01-08 20:43:50
一丶团队成员及任务分配 团队成员: 网络1811 简达亮 201821123019(组长) 网络1812 苏雨 201821123048(组员) 网络1811 罗赐 201821123022(组员 ) 任务分配: 二、项目git地址 https://gitee.com/luoci0213/StudentGradeSystem 三、项目git提交记录截图 四、项目功能架构图与主要功能流程图 思维导图 功能流程图 五、程序功能运行截图: 进入界面 用户选择 登录进入 学生成绩信息 增加学生信息 删除学生信息 修改学生信息 查找学生信息 柱状图 (学生)成绩查询 Excel表格生成 六、项目关键代码 Excel生成: public void LearningReport() throws SQLException { ArrayList<String> list1 = new ArrayList<String>(); Connection con = null; PreparedStatement ps = null; ResultSet rs = null; String sql = "select * from students "; con = JDBCUtil.getConnection(); ps = con.prepareStatement(sql); rs = ps

ArrayList去除重复元素

不羁岁月 提交于 2020-01-08 10:21:53
去除一个ArrayList的重复元素有两种方法:( ArrayList与Vector的存储结构是Object[],LinkedList是双向列表 )   第一种是不需要借助临时list,用equals方法比较ArrayList中数据,两次遍历原来list;   第二种是借助一个临时ArrayList,向临时List添加数据,调用arrayList.contains(obj)判断是否存在   了解ArrayList的contains原理:调用obj的equals方法进行判断在ArrayList中的位置是否大于零,进而判断是否存在。 public boolean contains(Object o) { return indexOf(o) >= 0; } /** * Returns the index of the first occurrence of the specified element * in this list, or -1 if this list does not contain the element. * More formally, returns the lowest index <tt>i</tt> such that * <tt>(o==null ? get(i)==null : o.equals(get(i)))</tt>, * or -1 if

C# 集合类

偶尔善良 提交于 2020-01-08 04:52:18
说起集合类,我们都不陌生,因为在项目中经常会用到。记得每次遇到要存储键值对时,都会想到HashTable,可以在用的过程中却不是很懂,不懂装懂,结果最后还是不会。今天中午正好有时间,就整理了一下相关的类,主要包括:列表、队列、位数组、哈希表和字典。 (一)ArrayList类:使用大小可按需动态增加的数组。 代码 class Program { static void Main(string[] args) { ArrayList al = new ArrayList(); al.Add(100);//单个添加 foreach (int number in new int[6] { 9, 3, 7, 2, 4, 8 }) { al.Add(number);//集体添加方法一 } int[] number2 = new int[2] { 11, 12 }; al.AddRange(number2);//集体添加方法二 al.Remove(3);//移除值为3的 al.RemoveAt(3);//移除第3个 ArrayList al2 = new ArrayList(al.GetRange(1, 3));//新ArrayList只取旧ArrayList一部份 Console.WriteLine("遍历方法一:"); foreach (int i in al)//不要强制转换 {

Java 集合类(一)

。_饼干妹妹 提交于 2020-01-08 00:48:52
今天我们先讲一下Collection: Collection和Collections的区别: java.util.Collection是一种java集合接口,它提供了对集合对象的基本操作通用接口方法,同时它还有很多具体实现: 注:以上图片只列举常用集合类 java.util.Collections是一个包装类,它包含许多有关集合操作的静态多态方法,此类不能实例化,它就像个工具类,服务与java的Collection。有关Collections的具体方法可参考JDK说明文档( 部分也可见 ),下面我举出几个方法示例: import java.util.Collection; import java.util.Collections; import java.util.ArrayList; import java.util.List; public class test { private double[] a = {123,33,423,655,4553}; List<Double> l = new ArrayList(); List<Double> l2 = new ArrayList(); public static void main(String[] args) { new test().sort(); } public void sort(){ for(int i = 0;

java中LinkedList源码分析

99封情书 提交于 2020-01-07 23:49:09
ArrayList是动态数组,其实本质就是对数组的操作。 那么LinkedList实现原理和ArrayList是完全不一样的。 现在就来分析一下ArrayList和LinkeList的优劣吧 LinkedList是一个双向链表,每个元素都是一个Node对象, 这个node对象里面有三个成员: E item;指向实际的元素 Node<E> next;指向下一个节点 Node<E> prev;指向前一个结点 利用idea编辑器查看LinkedList的结构,发现只有三个成员变量。 而所有的public方法操作的都是这个三个变量。 下面逐个分析方法。 主要就是调用了linkLast方法。 步骤如下: 第一步:l指向尾节点, 第二步:创建新的节点newNode;因为是在链表的最后添加元素,所以新节点的next元素为null. 第三步:尾节点指向新的节点 第四步:如果l(之前的尾节点)为空,新节点当作第一个节点 第五步:如果l(之前的尾节点)不为空,则之前的尾节点的next变量指向新节点。 链表大小size++; 修改的次数modCount++; List<String> list=new LinkedList<>(); list.add("a"); list.add("b"); 与ArrayList不同,LinkedList内存是按需分配的,不需要提前分配内存空间,因为操作的不是数组。

集合框架

孤街浪徒 提交于 2020-01-07 21:48:36
集合 框架 集合概述: 集合就是一个容器,这个容器可以装很多其他的数据。 为什么会有集合框架? 数组:长度固定!!! 数组在操作它内部元素的时候,功能很单一! 集合:集合的功能很多,很强大。 集合和数组 的区别 A:长度区别: 1.集合长度可变 2.数组长度固定 B:单一性区别: 1.数组只能存储同一类型的数据 2.集合可以同时存储不同类型的数据 集合的继承体系 集合是由许多个的 存储数据的时候需求不一样的: 有序的,无序的,允许重复有重复元素,不允许有重复元素等等 不同种类的集合数据结构不一样 数据结构:就是数据的存储方式 Collection接口 集合层次结构中的根界面 。 集合表示一组被称为其元素的对象。 一些集合允许重复元素,而其他集合不允许。 有些被命令和其他无序。 JDK不提供此接口的任何直接实现:它提供了更具体的子接口的实现,如Set和List 。 该界面通常用于传递集合,并在需要最大的通用性的情况下对其进行操作。 Collection的成员方法: boolen add (E e):添加一个元素 boolean remove(Object o):删除一个元素 void clear():清空 boolean contains(Object o):包含 boolean isEmpty():判断是否为空 int size():集合中有几个元素 1.List集合

Java ArrayList

跟風遠走 提交于 2020-01-07 21:00:49
ArrayList ,动态数组,类似于c++中的vector,可以动态的实现对数组的 插入、删除、求长度 。 数组的长度不可以发生改变,但是 ArrayList 集合的长度是可以随意变化的。 对于 ArrayList 来说,有一个尖括号<E>代表泛型。 注意:泛型只能是引用类型,不能是基本类型。 注意事项: 对于ArrayList集合来说,直接打印得到的不是地址值,而是内容,如果内容唯恐,得到的是空的中括号[]; 声明语法格式: ArrayList<泛型> 集合名 = new ArrayList<>(); ArrayList 当中的常用方法有: public boolean add(E e) //向集合当中添加元素,参数的类型与泛型一致。 //返回值代表添加是否成功 public E get(int index) //从向集合当中获取元素,参数是索引编号,返回值就是对应位置的元素 //索引值从0开始编号 public E remove(int index) //从集合当中删除元素,参数是索引编号,返回值就是被删除掉的元素 public int size(): // 获取集合的尺寸长度,返回值是集合中包含的元素个数 P.S. 如果希望向集合 ArrayList 当中存储基本类型数据,必须使用基本类型对应的“包装类” 基本类型 包装类(引用类型,包装类都位于java.lang包下)

FP-Tree(二)

时光怂恿深爱的人放手 提交于 2020-01-07 20:55:37
public class FPTree { // FP树根节点 FPNode root = new FPNode("Root", -1); // FP树节点线索头 Map<String, FPNode> firstNodeTable = new HashMap<>(); // FP树节点线索尾 Map<String, FPNode> lastNodeTable = new HashMap<>(); // 支持度 private int support = 1; public List<FPNode> table = new ArrayList<>(); private static List<LogTemplate> templates = new ArrayList<>(); public FPTree(List<List<String>> data, int support) { int size = data.size(); List<Integer> count = new ArrayList<>(); for (int i = 0; i < size; i++) { count.add(1); } buildTree(data, count, support, false); } public FPTree(List<LogTemplate> templates, int

关于C#中数组、ArrayList、List、Dictionary的用法与区别,最近才用到泛型,自己吸收了,可能有理解不到位的情况;

99封情书 提交于 2020-01-07 18:45:05
Dictionary<string, string>是一个泛型 \\ [value]也不一定都是string,也可能是一个类型; 他本身有集合的功能有时候可以把它看成数组 他的结构是这样的:Dictionary<[key], [value]> 他的特点是存入对象是需要与[key]值一一对应的存入该泛型 通过某一个一定的[key]去找到对应的值 ex:Dictionary<int,string> dic =new Dictionary<int,string>(); dic.Add(1,"清华大学"); dic.Add(2,"北京大学"); dic.Add(3,"复旦大学"); 这个时候可以定义: string str=dic[2]; \\str里面就是 清华大学 最后可以看出来,key不能重复,后面的值无所谓; 相比较而言List就比较简单了,只需定义一下 List<string> list =new List<string>(); 常用的两个方法Add()和AddRange(); list.Add(0); list.AddRange(); 来源: https://www.cnblogs.com/lao-K/p/12161286.html