arraylist

对Java OutOfMemory异常的探究

懵懂的女人 提交于 2020-02-26 01:28:06
Java堆溢出 虚拟机参数: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError 将堆的最小值和最大值都限制成为20M,-XX:+HeapDumpOnOutOfMemoryError出现内存异常时令java虚拟机Dump堆内存转储快照 代码 1 import java.util.*; 2 3 /** 4 * Created by zcy on 2017/6/11. 5 */ 6 public class TestHeapMemory { 7 8 static class OOMObject{ 9 10 } 11 12 public static void main(String[] args){ 13 List<OOMObject> list = new ArrayList<OOMObject>(); 14 while (true){ 15 list.add(new OOMObject()); 16 } 17 } 18 } 运行出现异常: java.lang.OutOfMemoryError: Java heap space Dumping heap to java_pid9392.hprof ... Exception in thread "main" java.lang.OutOfMemoryError: Java heap

当你面试的时候,被问到关于Fragment的种种

有些话、适合烂在心里 提交于 2020-02-26 00:36:53
前言 不知道你们都没有自己特别的学习的方法,我是有吧所有的整理成笔记的习惯 比如今天讲解的关于 Fragment 的我会做成笔记 由于文章有些地方代码过于太长了繁琐,所以部分省略掉了,敲了一下午眼睛和手脖子都酸了,至于省略的部分,对这些笔记,面试内容感兴趣的可以看笔记研究,欢迎留言 相关内容后续GitHub更新,想冲击金三银四的小伙伴可以找找看看,欢迎star ( 顺手留下GitHub链接,需要获取相关面试等内容的可以自己去找 ) https://github.com/xiangjiana/Android-MS 一丶Fragment 的使用 实现很简单,创建一个的布局,然后在 Activity 里点击时替换 Fragment mFragmentManager = getSupportFragmentManager(); mFragmentManager.beginTransaction() .replace(R.id.fl_content, fragment) .commitAllowingStateLoss(); 代码很简单,核心就三步: 创建 Fragment 获取 FragmentManager 调用事务,添加、替换 我们一步步来了解这背后的故事。 Fragment 大家应该比较熟悉,放到最后。 先来看看 FragmentManager 。 ####二丶

【最完整系列】JAVA-容器篇-LinkedList源码解析

拟墨画扇 提交于 2020-02-25 22:43:45
简介 LinkedList 顾名思义其本质是一个链表,具体来说是一个双向链表,同时还有2个指针分别对应链表的头和尾。 源码 源码还是跟 ArrayList 一样,从我们常用的代码出发: List<String> a = new LinkedList<>(); a.add("sidfate"); 进入初始化源码: // LinkedList 长度 transient int size = 0 ; // 指向头结点 transient Node < E > first ; // 指向尾节点 transient Node < E > last ; public LinkedList ( ) { } 可以看到默认的构造函数空空如也,需要注意的是链表是以 Node 为基础连接起来的,Node 的结构如下: private static class Node < E > { E item ; Node < E > next ; Node < E > prev ; Node ( Node < E > prev, E element, Node < E > next ) { this.item = element ; this.next = next ; this.prev = prev ; } } Node 结构也很简单,prev 和 next 说明它是一个双向的链表,保存前后 Node 的指针

07Scanner类、Random类、ArrayList类

邮差的信 提交于 2020-02-25 22:17:15
day07Scanner类、Random类、ArrayList类 第一章 API 概述 API(Application Programming Interface),应用程序编程接口。 Java API是一本程序员的 字典 ,是JDK中提供给 我们使用的类的说明文档。这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学 习这些类如何使用即可。所以我们可以通过查询API的方式,来学习Java提供的类,并得知如何使用它们。 API的使用步骤 打开帮助文档。 点击显示,找到索引,看到输入框。 你要找谁?在输入框里输入,然后回车。 看包。java.lang下的类不需要导包,其他需要。 看类的解释和说明。 学习构造方法。 使用成员方法。 第2章Scanner类 lang包不需要导包 2.1 Scanner功能 Scanner类的功能:可以实现键盘导入数据,到程序中. 2.2 引用类型使用步骤 1.导包 格式:import 包路径.类名称; 如果需要使用的目标类,和当前类位于同一包下,则可以省略导报语句不写. 只有Java.lang包下的内容不需要导包,其他的包都需要import语句; 举例: Java.util.Scanner; 2.创建对象 格式:类名称 = new 类名称(); 举例 Scanner sc = new Scanner(System.in); 3

Java集合

北城余情 提交于 2020-02-25 21:05:48
概述: List , Set, Map都是接口,前两个继承至 Collection 接口, Map 为独立接口 List下有 ArrayList , LinkedList ,Vector Set下有 HashSet , TreeSet ,LinkedHashSet Map下有 Hashtable ,LinkedHashMap, HashMap , TreeMap     常用集合类: ArrayList , LinkedList, HashSet, HashMap Connection接口: —---- List 有序,可重复 ArrayList 优点: 底层数据结构是数组, 查询快,增删慢。 缺点: 线程不安全,效率高 LinkedList 优点: 底层数据结构是链表, 查询慢,增删快。 缺点: 线程不安全,效率高 Vector(已放弃) 优点: 底层数据结构是数组,查询快,增删慢。 缺点: 线程安全,效率低 (数据量较大,同时数据查询到条件多的时候选择使用ArrayList       ,增删条件多的时候选择使用LinkehLish   一般情况直接使用ArrayList。) —----Set 无序,唯一 HashSet 底层数据结构是哈希表。 (无序,唯一) 如何来保证元素唯一性? 1.依赖两个方法:hashCode()和equals() LinkedHashSet

如何从ArrayList中删除重复的元素?

℡╲_俬逩灬. 提交于 2020-02-25 20:55:05
我有一个 ArrayList<String> ,我想从中删除重复的字符串。 我怎样才能做到这一点? #1楼 import java.util.*; class RemoveDupFrmString { public static void main(String[] args) { String s="appsc"; Set<Character> unique = new LinkedHashSet<Character> (); for(char c : s.toCharArray()) { System.out.println(unique.add(c)); } for(char dis:unique){ System.out.println(dis); } } } #2楼 LinkedHashSet可以解决问题。 String[] arr2 = {"5","1","2","3","3","4","1","2"}; Set<String> set = new LinkedHashSet<String>(Arrays.asList(arr2)); for(String s1 : set) System.out.println(s1); System.out.println( "------------------------" ); String[] arr3 = set

Minecraft Client 教程 #6 添加Setting

只谈情不闲聊 提交于 2020-02-25 19:34:03
首发于 Enaium的个人博客 一. 写Setting类 package cn.enaium.coreium.setting; import cn.enaium.coreium.module.Module; import java.util.ArrayList; public class Setting { private Module module; private String name; private boolean toggle; private double currentValueDouble, minValueDouble, maxValueDouble; private int currentValueInt, minValueInt, maxValueInt; private float currentValueFloat, minValueFloat, maxValueFloat; private ArrayList<String> modes; private String currentMode; private Category category; public enum Category { BOOLEAN, VALUE, MODE; } public Setting(Module module, String name, boolean toggle

JAVA面试题及参考分析-JAVA基础篇-2

浪子不回头ぞ 提交于 2020-02-25 19:25:52
13.构造器(constructor)是否可被重写(override)? 构造方法是不能被子类重写的,但是构造方法可以重载 简单的讲,就是说一个类可以有多个构造方法。 String, StringBuffer StringBuilder的区别 String 的长度是不可变的;StringBuffer的长度是可变的,线程安全;如果对一个字符串要经常改变的话,就一定不要用String,否则会创建许多无用的对象出来.15.HashMap的工作原理是什么? HashMap内部是通过一个数组实现的,只是这个数组比较特殊,数组里存储的元素是一个Entry实体(在JAVA8中为Node),这个Entry实体主要包含key、value以及一个指向自身的next指针。 HashMap是基于hashing实现的,当进行put操作时,根据传递的key值得到它的hashcode,然后再用这个hashcode与数组的长度进行模运算,得到一个int值,就是Entry要存储在数组的位置(下标);当通过get方法获取指定key的值时,会根据这个key算出它的hash值(数组下标),根据这个hash值获取数组下标对应的Entry,然后判断Entry里的key,hash值或者通过equals()比较是否与要查找的相同,如果相同,返回value,否则的话,遍历该链表(有可能就只有一个Entry,此时直接返回null)

ArrayList与Vector区别

一世执手 提交于 2020-02-25 17:18:06
Vector类所有方法都是同步的,保证线程安全,但是一般是两个线程以上,否则单线程访问在同步操作上耗费大量的时间; ArrayList是线程不同步的,既不保证线程安全,在不保证线程安全的情况下建议使用 来源: oschina 链接: https://my.oschina.net/u/4434424/blog/3171022

Java泛型使用的简单介绍

倾然丶 夕夏残阳落幕 提交于 2020-02-25 14:59:48
转自 https://www.cnblogs.com/LiaHon/p/11332355.html 目录 **一. 泛型是什么** **二. 使用泛型有什么好处** **三. 泛型类** **四. 泛型接口** **五. 泛型方法** **六. 限定类型变量** **七. 泛型通配符** **7.1 上界通配符** **7.2 下界通配符** **7.3 无限定通配符** **八. 总结** 一. 泛型是什么 “泛型”,顾名思义,“泛指的类型”。我们提供了泛指的概念,但具体执行的时候却可以有具体的规则来约束,比如我们用的非常多的ArrayList就是个泛型类,ArrayList作为集合可以存放各种元素,如Integer, String,自定义的各种类型等,但在我们使用的时候通过具体的规则来约束,如我们可以约束集合中只存放Integer类型的元素,如List iniData = new ArrayList<>()。 二. 使用泛型有什么好处 以集合来举例,使用泛型的好处是我们不必因为添加元素类型的不同而定义不同类型的集合,如整型集合类,浮点型集合类,字符串集合类,我们可以定义一个集合来存放整型、浮点型,字符串型数据,而这并不是最重要的,因为我们只要把底层存储设置了Object即可,添加的数据全部都可向上转型为Object。 更重要的是我们可以通过规则按照自己的想法控制存储的数据类型。