集合
Posted 一只代码爽
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集合相关的知识,希望对你有一定的参考价值。
一。集合框架的概述
1.集合,数组都是对多个数据进行储存操作的结构,简称java同期
说明,此时的储存,主要指的是内存方面的储存,不涉及到持久化的储存
2.1 数组在储存多个数据时的特点
*一旦初始化,数组长度就确定了,无法更改
*一旦初始化,数据类型也就确定了
2.2数组的缺陷
*长度无法改变
*数组提供的方法有限,增删插数据很不方便,效率不高
*数组储存数据的特点,有序,可重复,对于无序,不可重复的需求,不能满足
二。集合框架
Collection接口 单列集合,用来储存一个一个的对象
List接口 储存有序的可重复的数据——动态数组
ArrayList,LinkrdList,Vector
Set接口,储存无序的,不可重复的数据——高中讲的集合
HashSet,LinkedHashSet,TreeSet
对应图示
collection coll =new ArrayList()
add 方法 add(在括号里可以直接填入某种元素) add()
contains 方法 contains(在括号里直接填元素) 判断内容,调用equals
判断的时候有判断范围包括类型 比如“123”与123是不一样的
请注意,对比的是某一个元素的整体,而不是合起来的元素有没有你所输入的东西
判断集合里面是否含有括号内的元素
containonAll()
判断括号内的所有元素是否存在
remove()
删除括号内的某一个元素
removeAll()
删除括号内的所有元素
retainAll()
获取当前集合与括号内集合的交集
equals()
判断两个集合的元素是否相同
如果调换元素顺序的话会返回false,因为List是有序的
hashcode()
括号内不用填东西 返回当前对象的储存元素的地址
toArray()
集合变数组
object【】arr=coll.toArray();
数组变集合
List<String(<>里填数组类型)>list=Arrays.aslist(new String[]{"AA","bb","cc"})
遍历集合
Iterator iterator=coll.iterator();
方式一
System.out.println(iterator.next())
System.out.println(iterator.next())
System.out.println(iterator.next())
每次输出其中的一个元素
方式二
for(int i=0;i<coll.size();i++){
System.out.println(iterator.next());
}
方式三:推荐
while(iterator.hasNext()){
System.out.println(iterator.next());
}
错误方式1
Iterator iterator =coll.iterator();
while(iterator.next()!=null){
System.out.pringln()(iterator.next)
}跳指针了
错误方式二;
while(coll.iterator.hasnext()){
System.out.println(coll.iterator().next());
}每次调用iterator()方法,指针都会回到第一个元素之前‘
while (iterator.hasNext()){
Object obj=iterator.next();
if ("sahdonao".equals(obj)){
iterator.remove();
}
注意,调用remove是不能连续调用两次,且前面必须有一个next()
foreach循环
for(object obj:coll){
System。out。println()}
list集合类中元素有序,且可重复,集合中的每个元素都有其对应的顺序索引
list容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素
JDK API中List接口的实现类常用的有Arraylist,LinkedList和Vector
ArrayList作为List接口的主要实现类
线程不安全,效率高,底层使用object【】 elementDate
LinkedList 对于频繁的插入,删除操作,使用此类效率比ArrayList高,底层使用双向链表储存
VEctor作为LIst接口的古老实现类,线程安全,效率高,底层使用object【】 elementDate
jdk7情况下
ArrayList list =new Arraylist()//底层创建了长度是10的object【】数组elementDAte
list.add(123);//elementDate[0]=new Integer(123);
List.add(11);//如果此次的添加导致底层elementDate数组容量不够,则扩容
默认情况下,扩容为元容量的1.5被,同时需要将原有数组中的数据复制到新的数组中
建议开发中使用带参的构造器 ArrayList List=new ArrayList(int copacity)
jkd8情况下
ArrayLIst list=new ArrayList()//底层object【】 elementDate初始化为{}
List.add(123);//第一次调用add()时,底层才创建了长度为10的数组并将123添加其中
jdk8比jdk7更节省内存,延缓了空间的分配
List除了从Collection集合继承的方法外,List集合里添加了一些根据索引来 操作集合元素的方法。
>void add(int index, Object ele):在index位置插入ele元素
>boolean addAl(int index, Collection eles):从index位置开始将eles中 的所有元素添加进来
>Object get(int index):获取指定index位置的元素
>int indexOf(Object obj):返回obj在集合中首次出现的位置
>int lastlndexOf(Object obj):返回obj在当前集合中末次出现的位置
>Object remove(intindex):移除指定index位置的元素,并返回此元素
>Object set(intindex, Object ele):设置指定index位置的元素为ele
>List subList(int fromlndex, int tolndex):返回从fromlndex到tolndex
位置的子集合
以上是关于集合的主要内容,如果未能解决你的问题,请参考以下文章
[ jquery 文档处理 insertBefore(content) before(content|fn) ] 此方法用于把所有匹配的元素插入到另一个指定的元素元素集合的前面,实现外部插入(代码片段