arraylist

Google Gson-反序列化列表 宾语? (通用类型)

人盡茶涼 提交于 2020-02-05 01:42:01
我想通过Google Gson 传输列表对象,但是我不知道如何反序列化泛型类型。 在查看 此内容 后我尝试了什么(BalusC的答案): MyClass mc = new Gson().from Json (result, new List<MyClass>(){}.getClass()); 但是后来我在日食中遇到了一个错误,说“新的List(){}类型必须实现继承的抽象方法...”,如果我使用快速修复方法,则会得到20个以上的方法存根的怪物。 我很确定有一个更简单的解决方案,但是我似乎找不到它! 编辑: 我现在有 Type listType = new TypeToken<List<MyClass>>() { }.getType(); MyClass mc = new Gson().fromJson(result, listType); 但是,在“ fromJson”行中确实得到以下异常: java.lang.NullPointerException at org.apache.harmony.luni.lang.reflect.ListOfTypes.length(ListOfTypes.java:47) at org.apache.harmony.luni.lang.reflect.ImplForType.toString(ImplForType.java:83) at

算法练习

六眼飞鱼酱① 提交于 2020-02-04 23:25:17
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 题目分析:需要定义栈数据结构,并提供找出栈内最小元素的min函数,并且时间复杂度O(1)。 思路:借助辅助栈来实现(入栈时:添加的元素小于辅助栈的最顶元素,则入到辅助栈中。出战时:辅助栈和元栈栈顶元素相等则辅助栈出栈。) 对原来栈的封装,使之实现O(1)复杂度的min方法。 1 import java.util.Stack; 2 3 public class Solution { 4 //O(1)时间复杂度,借助辅助栈来实现(入栈时:添加的元素小于辅助栈的最顶元素,则入到辅助栈中。出战时:辅助栈和元栈栈顶元素相等则辅助栈出栈。)。 5 //对原来栈的封装,使之实现O(1)复杂度的min方法。 6 Stack<Integer> stack1 = new Stack<>(),stack2 = new Stack<>(); 7 public void push(int node) { 8 stack1.push(node); 9 if(stack2.empty()){ 10 stack2.push(node); 11 }else if(node<stack2.peek()){ 12 stack2.push(node); 13 } 14 } 15 16 public void

ArrayList和LinkedList异同

房东的猫 提交于 2020-02-04 19:09:09
ArrayList和LinkedList异同 1、是否保证线程安全:ArrayList和LinkedList都不是同步的,当多个线程访问到同一个ArrayList集合时,如果有超过一个线程修改了ArrayList集合,则必须手动保证该集合的同步性;所以都不保证线程安全; 2、底层数据结构:ArrayList底层使用的是Object数组结构,LinkedList底层使用的是双向链表数据结构; 3、插入或删除元素是否受元素位置的影响:ArrayList是数组存储,所以在第i个位置插入或删除元素时,第i个位置之后的所有元素都会向后/前移动位置(牵一发而动全身);LinkedList使用的是双向链表存储,在第i个位置插入或删除元素时,只需要将i处位置的链表断开,插入/删除元素之后再将链表连接起来,即只需要改变链表指针的指向,不需要重组数组; 4、是否支持快速随机访问:ArrayList底层使用的是Object数组结构,数组有索引,所以可以通过元素索引快速方便的查找到数据;LinkedList底层使用的是双向链表数据结构,需要遍历到特定位置才能访问到特定元素,所以不支持高效的随机访问; 5、内存空间占用;ArrayList的数组结构主要是在数组结尾处会预留一定的空间;而LinkedList的双向链表数据结构,每一个元素都比ArrayList中元素占用的空间大

Arrays.asList注意点

百般思念 提交于 2020-02-04 16:13:45
在进行数组转List的时候,经常会用到Arrays.asList();如果不注意的话,这个方法可能就会踩坑。 问题复现: public static void arrays2List(Integer[] numbers){ List<Integer> integers = Arrays.asList(numbers); integers.add(1); } 执行时会出现下面的问题: 在对Arrays.asList转换后的list进行操作的时候,只可以进行如下的操作。因为这里返回的list并不是java.util.ArrayList,而是Arrays中的静态内部类,java.util.Arrays$ArrayList。 可以操作的方法中没有.add方法,所以会出现错误。 解决: 1 类型强转:转换成java.util.ArrayList来解决 List<Integer> integers = new ArrayList<>(Arrays.asList(numbers)); 2 使用 Collections.addAll来解决(推荐使用) public static void arrays2List(Integer[] numbers){ List<Integer> objects = new ArrayList<>(); Collections.addAll(objects

java 类的基本概念、继承、Object类、数组列表、对象包装器、可变数量参数

雨燕双飞 提交于 2020-02-04 09:09:50
目录 1. 类 2. 包 2.1 静态导入 3. 继承 3.1 禁止类扩展 3.2 抽象类 4. Object类 5. 数组列表 6. 对象包装器 7. 可变数量参数 1. 类 依赖、聚合、继承; 依赖:如果一个类的方法操纵了另一个类的对象,则该类依赖于另一个类。应该尽可能减少这种依赖,降低耦合度。 聚合:一个类的对象包含着另一个类的对象,这种关系为聚合。 继承:继承关系后文再介绍,需要详细说明。 final 关键字,声明一个可变类的时候,只是表示这个引用指向的地址不变,即指向一个对象,之后不会再指向其他对象,但是对象的内容可以变。 构造器 如果类中提供了至少一个构造器,但是没有提供无参构造器,则在构造对象时,如果没有提供参数就会被视为不合法。仅当类没有提供任何构造器的时候,系统才会提供一个默认的构造器。 一个构造器调用另一个构造器:在一个构造器的第一个句开始就是this()这种形式,this就代表当前类的构造器。 比如: public Hello(int a, int b){} public Hello(int h){ this(9, 4); } 初始化块 初始化的方式处理构造器、声明中赋值,还有初始化块的方式。{ }包含的部分就是初始化块。 在一个类中,可以包含多个代码块,无论使用哪个构造器构造对象,首先运行块代码,然后才运行构造器。 类实例化的过程:1.

java泛型通配符&lt? extends T&gt和&lt? super T&gt的理解

无人久伴 提交于 2020-02-04 07:07:10
1. 什么是泛型通配? 当使用泛型类或者泛型接口时候,传递数据过程中, 泛型类型不确定 , 则可以通过<?> 来匹配。一旦使用通配符,只能使用Object中共性方法。 2. 使用通配符<?>示例 public class GenericDemo { public static void main ( String [ ] args ) { ArrayList < Integer > list1 = new ArrayList < > ( ) ; list1 . add ( 1 ) ; list1 . add ( 2 ) ; ArrayList < String > list2 = new ArrayList < > ( ) ; list2 . add ( "a" ) ; list2 . add ( "b" ) ; // 调用输出函数,分别想打印结果 printArray ( list1 ) ; printArray ( list2 ) ; } /* 当传入Integer类型,list2将会报错,当传入String类型,list1将会报错 此时,很多会填入Object泛型,但是对不起,泛型没有继承概念 因此我们使用通配符? */ public static void printArray ( ArrayList < ? > list ) { Iterator < ? >

How to retrieve specific data from json array via retrofit2 using gson parsing

让人想犯罪 __ 提交于 2020-02-04 05:29:25
问题 Here is the JSON response from a server (which i cannot change the structure of) My issues are as follows: 1. The data changes based on the query so sometimes the Primary posts & Secondary Posts are an array and sometimes they are an object/ string. How would i go about retrieving a value from Address without getting the whole structure? Eg. only retrieve Email & post code strings from MainAddress only retrieve Address1 from Website & Twitter { "Members": { "Member": { "@First_Id": "000", "

ArrayList源码分析(超全超长)

霸气de小男生 提交于 2020-02-04 04:28:34
ArrayList是Java非常重要的集合类,相信大家对它并不陌生。List和Map号称是Java最常用、使用最广泛的集合类,比如,我们从数据库获取多个数据的时候,都是返回List集合,我还没见过返回过Set集合;所以相比之下,Set集合使用的场景就非常少。不过这篇博客主要讲解ArrayList面试题及源码分析,未涉及到Set集合、Map集合。 在认识ArrayList之前,我们先回顾一下数组,因为Arrayist底层是基于变长数组实现的。 数组 数组是基于线性数据结构实现的,在Java中创建数组时,会在内存中划分出一块连续的内存空间,然后再根据数组长度划分成跟数组长度一样的一小块内存空间。 我们来画个图简单描述一下, 下面图中创建了字符串数组,定义它的长度为5,所以就会在内存中创建一大块连续的内存,然后再分成5小块内存(等分),并且该数组中的元素都有默认值:null。 基本所有的数组面试题,都会有一个说法:就是 数组的特点是,查询修改快,增加删除慢 。 我们还知道在数组中有索引这个概念, 当数组内存空间分配好了之后,会为每个元素分配一个索引,从0开始,直到数组长度-1 。索引非常重要,因为数组的增删改查都是基于索引实现的。 如果我们想查询的时候,直接根据索引来查询 string[0]; 如果我们想修改的时候,也是根据索引来修改 string[0] = “java”;

java基础-略知一二

为君一笑 提交于 2020-02-03 15:43:46
Collection Set HashSet LinkedHashSet SortedSet TreeSet List ArrayList 构造方法 LinkedList 构造方法 Map 特性 方法 HashMap 常用操作 Iterator Collection 集合中只能放置对象的引用,不能放置原生数据类型。 常用方法: 1234567891011121314151617181920212223242526272829303132333435 // 将所有元素从一个列表复制到另一个列表Collections.copy(new ArrayList(), new ArrayList());// 如果两个指定collection中没有相同的元素,则返回 trueCollections.disjoint(new ArrayList(), new ArrayList());// 使用指定元素替换指定列表中的所有元素Collections.fill(new ArrayList(), new Object());// 返回指定 collection 中等于指定对象的元素数Collections.frequency(new ArrayList(), new Object());// 返回指定源列表中第一次出现指定目标列表的起始位置,如果没有出现这样的列表,则返回 -1Collections

Set,List,Map,Vector,ArrayList的区别

十年热恋 提交于 2020-02-03 14:05:32
Set,List,Map,Vector,ArrayList的区别 JAVA的容器---List,Map,Set Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap Collection接口   Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些 Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。   所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个 Collection参数的构造函数用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。   如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子