arraylist

Java学习总结6-----Java集合类

試著忘記壹切 提交于 2020-03-29 21:39:11
今天在网上搜索了一下,发现一篇关于java集合的博文,里面整理得非常好, 特意copy过来和大家分享一下 本讲内容:集合 collection 讲集合collection之前,我们先分清三个概念: colection 集合,用来表示任何一种数据结构 Collection 集合接口,指的是 java.util.Collection接口,是 Set、List 和 Queue 接口的超类接口 Collections 集合工具类,指的是 java.util.Collections 类。 SCJP考试要求了解的接口有:Collection , Set , SortedSet , List , Map , SortedMap , Queue , NavigableSet , NavigableMap, 还有一个 Iterator 接口也是必须了解的。 SCJP考试要求了解的类有: HashMap , Hashtable ,TreeMap , LinkedHashMap , HashSet , LinkedHashSet ,TreeSet , ArrayList , Vector , LinkedList , PriorityQueuee , Collections , Arrays 下面给出一个集合之间的关系图: 上图中加粗线的ArrayList 和 HashMap 是我们重点讲解的对象

java集合对比

南笙酒味 提交于 2020-03-29 20:59:14
list与Set、Map 区别及适用场景 1、List,Set都是继承自Collection接口,Map则不是 2、List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉,(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的,加入Set 的Object必须定义equals()方法 ,另外list支持for循环,也就是通过下标来遍历,也可以用迭代器,但是set只能用迭代,因为他无序,无法用下标来取得想要的值。) 3.Set和List对比: Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。 List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。 4.Map适合储存键值对的数据 5.线程安全集合类与非线程安全集合类 LinkedList、ArrayList、HashSet是非线程安全的,Vector是线程安全的; HashMap是非线程安全的,HashTable是线程安全的; StringBuilder是非线程安全的,StringBuffer是线程安全的。 下面是具体的使用介绍: ArrayList与LinkedList的区别和适用场景 Arraylist: 优点

Java集合框架面试题目

末鹿安然 提交于 2020-03-29 20:26:32
1.为什么Map接口不继承Collection 接口? Set是无序集合,并且不允许重复的元素 List是有序的集合,并且允许重复的元素 而Map是键值对 它被视为是键的set和值的set的组合 Map被设计为键值对的集合,所以不需要继承Collection 接口 2.HashMap和Hashtable之间的区别? 同步或线程安全 Null键和Null值 迭代值 默认容量大小 3.comparable 和 comparator的不同之处? comparable接口实际上是出自java.lang包 它有一个 compareTo(Object obj)方法来将objects排序 comparator接口实际上是出自 java.util 包 它有一个compare(Object obj1, Object obj2)方法来将objects排序 4.如何对Object的list排序? 对objects数组进行排序,我们可以用Arrays.sort()方法 如果要对objects的集合进行排序,需要使用Collections.sort()方法 5. fail-fast 与 fail-safe 之间的区别? Fail fast快速地报告任何的failure。无论何时任何一个问题都会引发 fail fast系统fails 在Java Fail fast 迭代器中

JAVA基础——集合类汇总

醉酒当歌 提交于 2020-03-29 20:24:48
一、集合与数组 数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用。 集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用。 二、层次关系 如图所示:图中,实线边框的是实现类,折线边框的是抽象类,而点线边框的是接口 Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类。但是却让其被继承产生了两个接口,就是Set和List。Set中不能包含重复的元素。List是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式。 Map是Java.util包中的另一个接口,它和Collection接口没有关系,是相互独立的,但是都属于集合类的一部分。Map包含了key-value对。Map不能包含重复的key,但是可以包含相同的value。 Iterator,所有的集合类,都实现了Iterator接口,这是一个用于遍历集合中元素的接口,主要包含以下三种方法: 1.hasNext()是否还有下一个元素。 2.next()返回下一个元素。 3.remove()删除当前元素。 三、几种重要的接口和类简介 1、List(有序、可重复) List里存放的对象是有序的,同时也是可以重复的,List关注的是索引,拥有一系列和索引相关的方法,查询速度快。因为往list集合里插入或删除数据时

Java-通过反射越过泛型检查

烈酒焚心 提交于 2020-03-29 11:00:09
一、需求描述 现有一个ArrayList array= new ArrayList ();如何在array中添加String类型数据??? 二、思考 我们知道在集合类中一旦指定了泛型的类型,则只能在该集合中用该类型。但是我们可以利用反射机制来越过泛型检查。比如说利用反射机制获取ArrayList中的add()方法,再调用add方法时,就会越过泛型检查。通过反编译我们能看到这一现象。 现有如下代码,创建ArrayList时使用了泛型。 public class Test { public static void main(String[] args) throws Exception { ArrayList<Integer> array = new ArrayList<Integer>(); } } 利用反编译查看Class文件,就会发现此时创建ArrayList时并没有增加泛型。 这是因为泛型检查是在编译时期进行的,也就是说编译后的add()方法其实和没有指定泛型的add()方法是一致的,都是没有进行泛型检查的。 所以通过反射获取ArrayList的Class文件对象中的add()方法,在调用该add()方法时是不用泛型检查的。 三、需求实现 现在使用反射来实现这一需求。 代码如下: public class Test { public static void main

From Arraylist to Array

最后都变了- 提交于 2020-03-29 06:30:16
问题 I want to know if it is safe/advisable to convert from ArrayList to Array? I have a text file with each line a string: 1236 1233 4566 4568 .... I want to read them into array list and then i convert it to Array. Is it advisable/legal to do that? thanks 回答1: Yes it is safe to convert an ArrayList to an Array. Whether it is a good idea depends on your intended use. Do you need the operations that ArrayList provides? If so, keep it an ArrayList . Else convert away! ArrayList<Integer> foo = new

轻松搞定面试中的二叉树题目(java&python)

我与影子孤独终老i 提交于 2020-03-28 18:38:33
树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关的题目基本都可以用递归思想解决,当然有些题目非递归解法也应该掌握,如非递归遍历节点等等。本文努力对二叉树相关题目做一个较全的整理总结,希望对找工作的同学有所帮助。 二叉树节点定义如下: public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x){ val = x; left = null; right = null; } } View Code 题目列表: 1. 求二叉树中的节点个数 2. 求二叉树的深度 3. 前序遍历,中序遍历,后序遍历 4.分层遍历二叉树(按层次从上往下,从左往右) 5. 将二叉查找树变为有序的双向链表 6. 求二叉树第K层的节点个数 7. 求二叉树中叶子节点的个数 8. 判断两棵二叉树是否结构相同 9. 判断二叉树是不是平衡二叉树 10. 求二叉树的镜像 11. 求二叉树中两个节点的最低公共祖先节点 12. 求二叉树中节点的最大距离 13. 由前序遍历序列和中序遍历序列重建二叉树 14.判断二叉树是不是完全二叉树 按知识点分类 1

Android Launcher分析和修改3——Launcher启动和初始化

南笙酒味 提交于 2020-03-28 05:10:29
上面一篇文章说了Launcher是如何被启动的,Launcher启动的过程主要是加载界面数据然后显示出来, 界面数据都是系统APP有关的数据,都是从Launcher的数据库读取,下面我们详细分析Launcher如何加载数据。 在Launcher.java的onCreate()方法里面,调用了开始加载数据接口: //Edited by mythou//http://www.cnblogs.com/mythou///加载启动数据 if (!mRestoring) { mModel.startLoader(this, true); } mModel是LauncherModel的对象,由此可见,数据加载主要是在LauncherModel类里面实现的。 1、Callbacks接口 LauncherModel里面,需要先分析一个Callbacks接口。 //Edited by mythou//http://www.cnblogs.com/mythou/ public interface Callbacks { public boolean setLoadOnResume(); public int getCurrentWorkspaceScreen(); public void startBinding(); public void bindItems(ArrayList<ItemInfo>

What is the reason for my NullPointerException?

萝らか妹 提交于 2020-03-26 05:22:28
问题 In my program I have a class called Hive which contains Honey, Pollen, royalJelly and an arraylist of several types of bees. Some of the bee types have an eat method which is pretty much identical between them with the difference being in what they eat or the quantity they eat. Each bee has an anotherDay method which calls the eat method on the bee and in thehive's anotherDay method it loops through the arraylist calling each bees anotherDay. My Queen bees eat runs perfectly however, when I

怎样保护你的.NET程序。

主宰稳场 提交于 2020-03-26 04:41:36
http://develop.csai.cn/dotnet/200604201011271687.htm 摘要:阐述怎样保护用Microsoft.Net开发的软件代码的安全性。本人通过一次实际开发,总结出一个有效的方法。   众所周知,软件产品是智力的成果,是具有无形价值。而软件又是极其容易复制,所以牵涉到版权的问题。一个公司或个人辛辛苦苦开发出来的软件,突然发现被别人窃用了,那是一件非常令人难过的事。   微软公司的.NET开发效率非常高,使用Microsoft Visual Studio .NET 开发工具,参考.NET Framework SDK,你很快能开发出实用的程序,快速而且高效。   最近我公司开发了一个大型网站开发项目,其中包括了一个网站后台管理系统(CMS),是用C#开发,整个项目开发效率很高,使用Microsoft Visual Studio .NET 开发工具,自动生成aspx页面。在项目实施阶段,出现了一个问题,因为对方公司项目款还没完全给付,所以需要对相关代码进行保护,防止被窃用,损害本公司利益。   但是MSIL本身是很容易被反编译的,利用像 ILDASM(.NET Framework SDK 附带的 MSIL 反汇编程序)这样的工具或诸如 Anakrino 和 Reflector for .NET 这样的反编译程序