集合

Java当中的包装类

Java当中的集合,当中只能存放对象在内存当中的地址,所以它是一个逻辑抽象虚拟结构但是Java当中的基本数据类型没法直接放入集合,所以有了包装类

基本数据类型的包装类的对应关系

基本类型
包装类型
booleanBoolean
charCharacter
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble


●JDK5.0开始 基本数据类型和包装类类型的相互转换可以自动完成

●基本数据类型不能直接放入集合 但是其对应的包装类对象可以

    从基本数据类型 - 包装类对象-->动打包

    从包装类对象 - 基本数据类型-->自动解包

●其实包装类还扮演者工具类的角色和作用,它当中会提供一些很好用的方法

    Integer.parseInt();//自动打包

    Boolean.parseBoolean();//自动打包

    Double.parseDouble();//自动打包

集合(List)

存放数据的容器

ArrayList、LinkedList、VectorStack

ArrayList

ArrayList的基本用法

如何创建集合
List<Integer> list = new ArrayList<>();

ArrayList<Integer> list = new ArrayList<>();//构造方法可以传递int类型的参数,指定创建的容器大小,默认是10个

●JDK7.0的泛型可以自动推断(<>括号内的为泛型)

如何添加元素

一次添加一个:

 list.add(456); //涉及自动打包

 一次添加多个:

 Collections.addAll(list,444,555,66); //涉及JDK5.0可变参数
如何得到元素个数
System.out.println(list.size());
如何得到第几个元素
System.out.println(list.get(0));
如何遍历

1、for循环加get()方法 

2、foreach (JDK5.0之后支持)

3、Iterator(迭代器)

4、lambda表达式(JDK8.0新写法)

ArrayList删除元素

1、ArrayList提供了一个remove(int)的方法

●用于删除对应的第几个元素 参数是下标索引值

●另外被删除的元素身后所有的元素会向前移动

●请不要使用for + remove(i) 删除所有元素,会有遗漏

●可以直接使用clear() 清空所有元素

2、ArrayList还提供了一个remove(Object)

●能够删除指定的那个元素

●当集合当中存放的是Integer类型对象的时候,使用这个删除方法必须要保证传入的也是Integer对象,否则会被理解成指定的下标索引值 所以容易出现异常

3、ArrayList那个传Object参数的remove(Object)完全尊重equals()方法返回的结果

equals返回:

  true : 即便两个对象不一样 也被认定成一样 视作逻辑相等

  false : 即便两个对象是内存当中的同一个 也会被认定不同

4、ArrayList删除元素尊重equals(),是要被删除的元素主动调用equals() 跟集合当中的老元素进行比较,不会要求老元素调用方法

5、使用迭代器遍历集合的过程当中 

●不允许对集合整体进行添加或者删除操作,否则触发并发修改异常

●如果一定要去删除,请使用迭代器自身提供的Iterator.remove();

ArrayList构造方法可以直接传参指定底层数组的大小

默认只有10块空间 满了之后会动态扩容,但是如果程序员已经知道最终要存放多少元素

请构造方法传参直接指定大小以防止添加元素的过程多次触发扩容操作影响效率

ArrayList专属的方法

ensureCapacity(int) :  扩容

trimToSize() :  缩容

HashSet

底层采用哈希表实现的无序且唯一的单值类型集合

●无序:既不是添加的顺序也不是升序或者降序。只要是散列,必然无序

如何创建集合

Set<Integer> set = new HashSet<>(); //可以传递参数(a,b)

●a  int类型,分组组数 默认16,值为2的n次方

●b  float类型,加载因子,默认0.75F

如何添加元素

set.add(1); //一次添加一个
Collections.addAll(set,12,21,32); //一次添加多个
set.addAll(setOther); //一次添加一组,setOther为另一个集合

●在添加元素的时候 如果HashSet认定了重复元素,那么集合当中只会保留一个,遵循先来后到原则,后来的重复元素直接舍弃

如何得到元素个数

System.out.println(set.size());

如何遍历

  1. Iterator(迭代器)

  2. foreach(增强for循环)

  3. lambda(lambda表达式)

●使用迭代器遍历集合的过程当中,不允许对集合整体进行添加或者删除操作,否则迭代器的next()会触发并发修改异常,如果需要删除 请使用迭代器自身的Iterator.remove();

唯一定义

这里的唯一取决于如何定义hashCode()和equals(),通过覆盖这两个方法可以自定义唯一的要求

使用HashSet千万不要在添加元素之后,直接修改参与生成哈希码的属性否则会导致(删除不掉、添加重复)的事情

本文标题:集合
转载请注明:https://blog.grstudy.com/java/note/22
作者头像
boss创始人

站长

上一篇:Object类的5个常用方法
下一篇:内部类