arraylist

java 泛型详解

◇◆丶佛笑我妖孽 提交于 2020-01-13 18:30:37
https://blog.csdn.net/s10461/article/details/53941091 对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下。 本文参考java 泛型详解、Java中的泛型方法、 java泛型详解 1. 概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。 什么是泛型?为什么要使用泛型? 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。 泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。 2. 一个栗子一个被举了无数次的例子: List arrayList = new ArrayList();arrayList.add("aaaa");arrayList.add(100); for(int i = 0; i< arrayList.size();i

Guice : Inject an ArrayList of Strings

江枫思渺然 提交于 2020-01-13 17:54:37
问题 I'm trying to inject an ArrayList of String s with the help of Guice. I want to show a panel with many RadioButtons (for example) where an user can select some services to activate. Once selected, I would like to get all the names of the selected services and add them into a list, and inject this list to the manager responsible to create the services. Here is an example: public class UIProviderModule extends ProviderServiceModule { private ArrayList<String> requestedServices; public

java中数组以及集合

强颜欢笑 提交于 2020-01-13 13:38:03
java中数组: 数组在Java里是一种特殊类型,有别于普通的“类的实例”的对象。但实际数组也是一种对象类型,int[]a = new int[5] a是在java栈中分配的引用变量,类型是int[] 数组类型,指向在堆里面地址连续的实际数组对象。 在内存中,数组存储在连续的区域内部,因为数组中每个元素的类型相同,则占用的内存大小也一致,所以在访问数组中的元素时可以直接根据数组在内存中的起始位置以及下标来计算元素的位置,因此数组的访问速度很高。数组必须要初始化才能使用,初始化之后JVM会自动分配默认值,引用变量默认值是null。 数组和集合的区别: 1》数组初始化之后大小固定,无法再改变,集合大小可以改变。 2》同一个数组只能存储同一种数据类型(基本类型/引用类型).集合不考虑泛型可以存储多种数据类型,集合是存储对象的,所以基本类型不能放入集合,可以使用基本类型的包装类型。 3》若程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用。 数组和集合之间进行转化: toArray():将集合转化为数组。 Arrays.asList():将数组转化为集合. 集合的体系结构 List、Set、Map是这个集合体系中最主要的三个接口。 List和Set继承自Collection接口。 Map也属于集合系统,但和Collection接口不同。

java: how to check the type of an ArrayList as a whole

允我心安 提交于 2020-01-13 12:02:50
问题 i know how to hard code an algorithm on how to check the types of each object in an arraylist, but is there any other way in checking the type of that ArrayList<> in one go, i mean my application has only three types of arraylist. Say i have a function that returns an ArrayList, and its definiton is that in a variable o (its an arraylist of object ofcourse) i'll add a person object, o.add(person); and having added all person data on an arraylist of objects and when a call this function say

List集合

五迷三道 提交于 2020-01-13 09:37:33
List集合有序、元素可重复。以元素的添加顺序作为集合的排列顺序,用下标索引集合中的元素。 List因为使用下标索引元素,所以元素可重复。Set使用元素本身来索引,所以元素不能重复。 List的继承关系: List继承了Collection的所有方法,也有自身的一些方法(下标操作): void add(int index,Object element) 在指定处插入一个元素 boolean addAll(int index,Collection c) 在指定处插入c的所有元素 Object get(int index) 获取指定位置处的元素 int indexOf(Object obj) 返回该对象在集合中第一次出现的位置 int lastIndexOf(Object obj) 最后一次出现的位置 Object remove(int index) 删除并返回指定位置的元素 Object set(int index,Object obj) 替换/设置指定位置的元素,并返回旧的元素 List subList(int start,int end) 返回子List ListIterator listIterator() 返回List集合专用的迭代器 Java8新增了sort()、replaceAll()2个方法,可以自定义排序规则、匹配模板。 List接口常用的实现类: 1

JDK源码阅读-------自学笔记(一)(详细版集合类)

被刻印的时光 ゝ 提交于 2020-01-13 09:11:55
一、前景提要 本人 经历了IT行业的多种类型企业,外包/创业小公司/中型公司,一步步成长起来,现在可以给大家透露下为什么进大企业在IT行业是重要的: 在外包公司,你要做的就是对接别人写好的接口,然后按照其要求编写一个业务的接口或者几个接口,那么你的技术也就是会写接口,而且还不是全面的,因为只会让你做那部分接口,而不是项目的全部,你对于数据库如何链接,数据库类型,数据库业务逻辑的操作都不会很清楚,所以你做的工作就是跟前段或者没有前段的做单独业务的对接,很多部分都是别人写好的,但是你又看不到,所以你根本不清楚整个业务逻辑是什么. 创业公司小公司(50-500),由于人员少,企业的资金有限,所以很多时候你需要一个人兼职多项工作,多项工作,作为后端就需要会运维服务(Linux),项目部署,系统架构的基本架构搭建,后端的数据库连接,数据库设计,数据库建表,SQL语句的书写,后端三层架构的数据传递等等技能,这里需要的是一种多功能工,虽然你可以会很多技能,但是你也没有一项是精通的技能,所以你也只是一个能干活的员工而已,距离成为架构师,技术总监没有发展起来的可能性,除非你的企业三五年内能增长到几千,上万的员工,但是,按照我国的情况,几乎是不可能的. 中型企业(1000-5000),这时候的项目就已经有了一些架构的雏形,否则的话项目越写越大,越写越冗余,总会写到崩溃的,而这时候很多的设计模式

【金三银四】ArrayList图解存储原理与数据结构揭秘

三世轮回 提交于 2020-01-13 08:50:32
前言: 你好,早上、中午、下午、晚上好。我是辛巴哥。一名无缘985,日常996工程师。 今天我辛巴哥来教娜娜学ArrayList 开始快速 import java . util . ArrayList ; /**** * 求关注 微信搜:Java大型网站架构 */ public class ArrayListDemo { public static void main ( String [ ] args ) { ArrayList < String > arrayList = new ArrayList < String > ( ) ; arrayList . add ( "辛巴" ) ; arrayList . add ( "娜娜" ) ; arrayList . add ( "微信搜:Java大型网站架构" ) ; for ( String s : arrayList ) { System . out . println ( s ) ; } } } 大家在日常开发中都是这样使用的,只要是java开发人员,无论你是1年工作还是10年工作。我相信Arraylist都是非常熟悉使用的,但是知道其底层实现的人就少很多了,这发生在我身边的事情,小编我现在在某大厂上班,经常面试一些工作5-6年的程序员,问问他们HashMap和ArrayList底层实现,都知道是数组、链表、hash算法

How to remove integer from list? [duplicate]

痞子三分冷 提交于 2020-01-13 08:16:10
问题 This question already has answers here : Properly removing an Integer from a List<Integer> (8 answers) Closed 2 years ago . I need to remove integer from integer arraylist. I have no problem with strings and other objects. But when i removing, integer is treated as an index instead of object. List<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(2); list.add(300); list.remove(300); When I am trying to remove 300 i am getting: 06-11 06:05:48.576: E/AndroidRuntime(856): java.lang

Java API —— List接口&ListIterator接口

蓝咒 提交于 2020-01-13 05:18:04
1、List接口概述 有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。 与 set 不同,列表通常允许重复的元素。 例子1: package listdemo; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * Created by gao on 15-12-14. */ public class ListDemo01 { public static void main(String[] args) { // 创建集合对象 List list = new ArrayList(); // 创建字符串并添加字符串 list.add("hello"); list.add("world"); list.add("java"); // 遍历集合 Iterator it = list.iterator(); while (it.hasNext()){ String s = (String)it.next(); System.out.println(s); } } } 输出结果: hello world java 例子2: package

Permutation of a 2 dimensional arraylist

梦想的初衷 提交于 2020-01-13 04:26:09
问题 I'm trying to make a 2 dimensional array list that is filled with every possible combination of lets say 1,2,3,4 recursively. with no double ups. for example. 1,0,0 2,0,0 3,0,0 4,0,0 1,2,0 1,3,0 1,4,0 1,2,3 etc... so far I have //this gives me all my numbers for(int i =0;i<arraySize;i++) index[i] = i; // and is the part that make the combinations for(int i = 0;i<arraySize;i++){ for(int x = 0;x<k;x++) combinations.get(i).set(x, index[i]); EDIT: Also I'm not trying to print the result I want to