arraylist

java的集合框架最全详解

不想你离开。 提交于 2020-01-01 15:13:07
java的集合框架最全详解(图) 前言: 数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作的方法。 在Java语言中,Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类)。所有抽象出来的数据结构和操作(算法)统称为Java集合框架(JavaCollectionFramework)。 Java程序员在具体应用时,不必考虑数据结构和算法实现细节,只需要用这些类创建出来一些对象,然后直接应用就可以了,这样就大大提高了编程效率。 1. 先说Set和List: 1.1. Set子接口:无序,不允许重复。List子接口:有序,可以有重复元素。具体区别是 Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。<对应类有 HashSet,TreeSet> List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。<相应类有 ArrayList,LinkedList,Vector> Set和List具体子类: 2.2. < 实例比较> HashSet:以哈希表的形式存放元素,插入删除速度很快。 ArrayList:动态数组,LinkedList:链表、队列、堆栈。

Java8 ArrayList源码分析

孤街浪徒 提交于 2020-01-01 14:57:46
java.util.ArrayList 是最常用的工具类之一, 它是一个线程不安全的动态数组. 本文将对JDK 1.8.0中ArrayList实现源码进行简要分析. ArrayList 底层采用 Object[] 来存储, 每次添加元素前都会检查数组是否有足够空间容纳新的元素. 若数组空间不足则会进行扩容操作, 即创建一个容量更大的数组 并将已有的元素复制到新数组中. 默认情况下新数组的容量是当前容量的1.5倍. ArrayList使用 Arrays.copyOf 和 System.arraycopy 调用原生(native)方法进行数组复制, 以提高效率. addAll , removeAll 等方法中通常使用 c.toArray 方法来获取容器中所有元素. ArrayList提供了 iterator() 和 listIterator() 两种迭代器, 前者只能向后移动, 而后者可以双向移动. iterator() 只能删除上一个访问的元素, 而 listIterator() 还可以在游标位置添加元素. 两种迭代器都采用fail-fast机制, 即使用 modCount 记录结构性改变(添加删除元素等)的次数, 迭代器在移动前会检查 modCount 是否发生改变. 若 modCount 改变, 则抛出异常中止迭代. 该方法是为了防止其它线程修改容器造成迭代结果不一致.

2016.3.9-3.10(java集合框架)

情到浓时终转凉″ 提交于 2020-01-01 14:54:58
3.9 集合框架有什么作用? 集合框架其主要功能是用来将存储的数据以某种结构组织,并以特定的方式来访问这些数据。 Java集合框架中有哪些存储方式? Java集合框架中的对象容器,按照对象在其中的存储方式,分为Set、List、和Map三种类型。 Set类型对象没有顺序,且不能重复; List类型对象容器中的对象按照索引顺序排序,而且可以有重复的对象; Map类型对象容器中的元素包含一对“键对象-值对象”映射,其中键对象不能重复,值对象可以重复。 以上三种存储方式对应Java集合框架中Set、List、和Map三个接口。 Collection 接口 和 Iterator 接口分别有什么作用? Collection接口库位于Set接口和List接口的最顶层,是Set接口和List接口的父接口,Collection接口中定了Collection对象共有的一些基 本方法,这些方法分为基本操作、批量操作和数组操作 Iterator接口是一种用于遍历集合的接口。 List接口继承Collection接口,有什么特点? List中的元素是有顺序的 List通常允许重复元素 List的实现类通常支持null元素, 可以通过索引访问List对象容器中的元素。 ArrayList:使用最广泛几何元素增加或删除操作不频繁时使用,最适合查询。 LinkedList

Collections类方法详解

筅森魡賤 提交于 2020-01-01 14:52:30
Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。 1) 排序(Sort)使用sort方法可以根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable接口。此列表内的所有元素都必须是使用指定比较器可相互比较的 double array[] = {112, 111, 23, 456, 231 }; for (int i = 0; i < array.length; i++) { list.add(new Double(array[i])); } Collections.sort(list); for (int i = 0; i < array.length; i++) { System.out.println(li.get(i)); } //结果:112,111,23,456,231 2) 混排(Shuffling) 混排算法所做的正好与 sort 相反: 它打乱在一个 List 中可能有的任何排列的踪迹。也就是说,基于随机源的输入重排该 List,这样的排列具有相同的可能性(假设随机源是公正的)。这个算法在实现一个碰运气的游戏中是非常有用的。例如,它可被用来混排代表一副牌的Card 对象的一个 List 。另外,在生成测试案例时,它也是十分有用的。

JSONObject和JSONArray使用

こ雲淡風輕ζ 提交于 2020-01-01 13:43:40
1.所依赖JAR包 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包: commons-lang.jar commons-beanutils.jar commons-collections.jar commons-logging.jar ezmorph.jar json-lib-2.2.2-jdk15.jar 2.Demo 2.1 应用场景: 后台的java类,如实体类、List、Set、Map转成json字符串发送到其它项目或者jsp端 jsp端或者其它项目发送过来的json字符串,需要解析成l实体类、List、Set、Map等java类 2.2 Student实体类 package json; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Set; public class Student { private int id; private String name; private String age; private Date birthDay; private List list; private Set set; private Map map; public int getId() { return id;

集合

别来无恙 提交于 2020-01-01 13:07:44
什么是集合 集合(Collection)类是专门用于数据存储和检索的类。这些类提供了对栈(stack)、队列(queue)、列表(list) 和哈希表(hash table)的支持。大多数集合类实现了相同的接口。 集合(Collection)类服务于不同的目的,如为元素动态分配内存,基于索引访问列表项等等。这些类创建Object类的对 象的集合。在C#中,Object类是所有数据类型的基类 常用的集合类 动态数组(Array List) 它代表了可被单独索引的对象的有序集合。它基本上可以替代一个数组。但是,与数组不同的是,您可以使用索引在指定的位置添加和移除项目,动态数组会自动重新调整它的大小。它也允许在列表中进行动态内存分配、增加、搜索、排序各项。 哈希表(Hasht able) 它使用键来访问集合中的元素。当您使用键访问元素时,则使用哈希表,而且您可以识别一个有用的键值。哈希表中的每一项都有一个键/值对。键用于访问集合中的项目。 什么是哈希表 它使用键来访问集合中的元素。当您使用键访问元素时,则使用哈希表,而且您可以识别一个有用的键值。哈希表中的每一项都有一个键/值对。键用于访问集合中的项目。 Hashtable类常用的属性 Count获取 Hashtable中包含的键值对个数。 IsFixedSize获取一个值,表示 Hashtable是否具有固定大小。

day16<集合框架+>

霸气de小男生 提交于 2020-01-01 09:45:25
集合框架(去除ArrayList中重复字符串元素方式) 集合框架(去除ArrayList中重复自定义对象元素) 集合框架(LinkedList的特有功能) 集合框架(栈和队列数据结构) 集合框架(用LinkedList模拟栈数据结构的集合并测试) 集合框架(泛型(generic)概述和基本使用) 集合框架(ArrayList存储字符串和自定义对象并遍历泛型版) 集合框架(泛型的由来) 集合框架(泛型类的概述及使用) 集合框架(泛型方法的概述和使用) 集合框架(泛型接口的概述和使用) 集合框架(泛型高级之通配符) 集合框架(增强for的概述和使用) 集合框架(ArrayList存储自定义对象并遍历增强for版) 集合框架(三种迭代的能否删除) 集合框架(静态导入的概述和使用) 集合框架(可变参数的概述和使用) 集合框架(Arrays工具类的asList()方法的使用) 集合框架(集合嵌套之ArrayList嵌套ArrayList) ###16.01_集合框架(去除ArrayList中重复字符串元素方式)(掌握) A:案例演示 需求:ArrayList去除集合中字符串的重复值(字符串的内容相同) 思路:创建新集合方式 public class Demo1_ArrayList { public static void main(String[] args) { ArrayList

Unchecked assignment for 'java.util.ArrayList'

依然范特西╮ 提交于 2020-01-01 08:43:24
问题 I get the warning: Unchecked assignment for 'java.util.ArrayList' to 'java.util.ArrayList < com.test.mytest >' for: private ArrayList<LocoList> myLocations = new ArrayList(); How to fix it? 回答1: You want new ArrayList<>(); so that you use the right generic type. At the moment you're using the raw type on the right hand side of = . So you want: private ArrayList<LocoList> myLocations = new ArrayList<>(); Or just be explicit: private ArrayList<LocoList> myLocations = new ArrayList<LocoList>();

Java 8 Arraylist hugeCapacity(int) implementation

丶灬走出姿态 提交于 2020-01-01 08:20:47
问题 I'm reading the documentation for how ArrayList s in Java are grown. I don't understand why the hugeCapacity(int minCapacity) method chooses to return either Integer.MAX_VALUE or MAX_ARRAY_SIZE . From how MAX_ARRAY_SIZE is defined in the class, 244 | private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8; It's almost the same as Integer.MAX_VALUE except off by the size of one integer ( 32 bits ). 264 | private static int hugeCapacity(int minCapacity) { 265 | if (minCapacity < 0) //

Java 8 Arraylist hugeCapacity(int) implementation

空扰寡人 提交于 2020-01-01 08:20:05
问题 I'm reading the documentation for how ArrayList s in Java are grown. I don't understand why the hugeCapacity(int minCapacity) method chooses to return either Integer.MAX_VALUE or MAX_ARRAY_SIZE . From how MAX_ARRAY_SIZE is defined in the class, 244 | private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8; It's almost the same as Integer.MAX_VALUE except off by the size of one integer ( 32 bits ). 264 | private static int hugeCapacity(int minCapacity) { 265 | if (minCapacity < 0) //