1.集合是储存对象的,长度可变,可以封装不同的对象
2.迭代器: 其实就是取出元素的方式(只能判断,取出,移除,无法增加)
就是把取出方式定义在集合内部,这样取出方式就可以直接访问集合内部的元素,那么取出方式就被定义成了内部类.
二每一个容器的数据结构不同,所以取出的动作细节也不一样.但是都有共性内容判断和取出,那么可以将共性提取,这些内部类都符合一个规则Iterator
Iterator it = list.iterator(); while(it.hasNext()){ System.out.println(it.next()); }
另一种是
for(Iterator it = it.iterator(); it.hasNext();){ System.out.printin(it.next());}
Collection:
(1).List:元素是有序的,元素可以重复.因为改集合体系有索引.
!--ArrayList:底层的数据结构使用的是数组结构 ,特点:查询速度快,但是增删慢.线程不同步
!--LinkedList:底层使用的是;链表数据结构,特点:增删速度快,查寻速度慢.
!--Vector:底层的数据结构使用的是数组结构 ,.线程同步,速度慢,被ArrayList替代l
list:特有方法,凡是可以操作角标的方法都是该体系特有的方法
增:add(index,element); addAll(index,Collection);
删:remove(index);
改:set(index,element);
查:get(index); subList(from,to); ListIterator();(重点)
注意:判断同一对象,equals方法
public boolean equals(Object obj){ if(!(obj instanceof Person)) return false; Person p=new Person(); return this.name.equals(p.name)&&this.age==p.age; }
(2). Set:元素是无序的(元素存入和取出的顺序是不一定一致的),不可以重复
!--HashSet:底层数据结构是哈希表
HashSet使如何保证元素唯一性的呢?
是通过元素的两个方法,hashcode和equals来完成
如果元素的HashCode相同才会判断equals是否为true,反の,不会调用
对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法
!--TreeSet:
--------------------------------------------------------------------
1.toArray()方法:是遍历用的(把集合转变为数组)
public class ToArray { public static void main(String[] args) { Collection c=new ArrayList(); c.add("hello"); c.add("world"); c.add("java"); Object[] obj=c.toArray(); for(int x=0;x < obj.length;x++){ System.out.println(obj[x]); } } }
1.1asList()方法,把数组转变为集合
//定义一个数组 //String[] s={"hello","world","java"}; //Listlist=Arrays.asList(s); //直接引用 List list=Arrays.asList("hello","world"); for(String s1:list){ System.out.println(s1); }
注意:虽然他可以把数组转变成集合,但是本质是数组,所以他的长度不能改变,不能增删
2.数组长度是length方法,字符串的长度是length(),集合求长度的方法是size.
3. Iterator迭代器是集合的特有遍历方法
while方法:(习惯用法)
Iterator it=list.iterator();//list是集合 while(it.hasNext()){ //判断是否有下一个数据 System.out.println(it.next()); }
for循环方法:(效率高,it用完就是垃圾)
for(Iterator it=c.iterator();it.hasNext();){ System.out.println(it.next()); }
注意:不能连续it.next(),使用一次就换一个对象
4.list集合特有的遍历方法:就是size和get()的结合
for(int x=0; x
5.list特有的迭代器
ListIteratorlit=list.listIterator(); while(lit.hasNext()){ System.out.println((String)lit.next()); } while(lit.hasPrevious()){ System.out.println((String)lit.previous()); }
注意:ListIterator可以实现逆向遍历,但是必须现正向遍历,否则无意义
6.HashTable和HashMap的区别
HashTable:线程安全,效率低,不允许null建和null值.
HashMap:线程不安全,效率高,允许null建和null值.
7.Collection和Collections的区别?
Collection:是单列集合的顶层接口,有子接口List和Set
Collections:是针对集合操作的工具类,有对集合进行排序和二分查找的方法
8.二分查找找不到,返回 -(最大索引+1)忍者必须死34399账号登录版 最新版v1.0.138v2.0.72
下载勇者秘境oppo版 安卓版v1.0.5
下载忍者必须死3一加版 最新版v1.0.138v2.0.72
下载绝世仙王官方正版 最新安卓版v1.0.49
下载Goat Simulator 3手机版 安卓版v1.0.8.2
Goat Simulator 3手机版是一个非常有趣的模拟游
Goat Simulator 3国际服 安卓版v1.0.8.2
Goat Simulator 3国际版是一个非常有趣的山羊模
烟花燃放模拟器中文版 2025最新版v1.0
烟花燃放模拟器是款仿真的烟花绽放模拟器类型单机小游戏,全方位
我的世界动漫世界 手机版v友y整合
我的世界动漫世界模组整合包是一款加入了动漫元素的素材整合包,
我的世界贝爷生存整合包 最新版v隔壁老王
我的世界MITE贝爷生存整合包是一款根据原版MC制作的魔改整