概述
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Test04 {
public static void main(String[] args) {
Collection coll = new ArrayList();
coll.add("abc1");
coll.add("abc2");
coll.add("abc3");
coll.add("abc4");
//使用了Collection 中的iterator()方法 调用集合中的迭代器方法 是为了获取集合中的迭代器对象
//先有迭代器对象后通过迭代器的方法来取其中的内容
Iterator it = coll.iterator();
System.out.println(it.next());
System.out.println(it.next());//迭代器中有指针 自动向下一个
while(it.hasNext()){
System.out.println(it.next());
}
for(Iterator it2 = coll.iterator();it2.hasNext();){ //节省内存 用完迭代器就没了 一般都这样用
System.out.println(it2.next());
}
//获取
//int size();
//依赖容器内部的结构有迭代器 迭代器通过内部类完成
//Iterator iterator():取出元素的方式:迭代器
//该对象必须依赖于具体的容器 因为每一个容器的数据结构都不同
//所以该迭代器对象是在容器中进行内部实现的
//对于使用容器者而言 具体的实现不重要 只要通过容器获取到该实现的迭代器的对象即可
//也就是iterator
//Iterator接口就是对所有Collection 容器进行元素取出的公共接口
}
}
import java.util.ArrayList;
import java.util.List;
public class Test05 {
public static void main(String[] args) {
/*
* Collection
* List 有序 (存入和取出的顺序一致 )元素都有索引(角标) 元素可以重复
* Set 元素不能重复 无序
* List 特有的常见方法 有一个共性特点就是都可以操作角标
* 1、添加
* void add(index,element);
* void add(index,collection);
*
* 2、删除
* Object remove(index);
*
* 3、修改
* Object set(index,element);
*
* 4、获取
* Object get(index);
* int indexOf(object);
* int lastIndexOf(object);
* List subList(from,to); 包含头不包含尾
* List可以完成对元素的增删改查
*/
List list = new ArrayList();
show(list);
}
private static void show(List list) {
//添加元素
list.add("abc1");
list.add("abc2");
list.add("abc3");
System.out.println(list);
//插入元素
list.add(1,"abc9");
System.out.println(list);
//删除元素
System.out.println("remove:"+list.remove(2));//删掉的是角标不是对象
//修改元素 collection 都没有
System.out.println("set:"+list.set(1,"abc8"));
//获取元素
// System.out.println("get:"+list.get(6));//java.lang.IndexOutOfBoundsException 角标越界
//获取子列表
System.out.println("sublist:"+list.subList(2, 3));//就一个 不包含尾
}
}
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class Test06 {
public static void main(String[] args) {
List list = new ArrayList();
list.add("abc1");
list.add("abc1");
list.add("abc2");
list.add("abc3");
list.add("abc4");
//public boolean add(Object obj){//在设计的时候用的是Object接受对象所以用Object 接受iterator的next()
//}
//
ListIterator it = list.listIterator();//获取列表迭代器对象
//可以实现在迭代过程中完成对元素的增删改查 listIterator(5);从5角标开始
// 只有list集合具备该迭代功能
while(it.hasNext()){
Object obj = it.next();
if(obj.equals("abc2")){
it.set("abc9");
}
}
System.out.println("next:"+it.hasNext());
System.out.println("prevou:"+it.hasPrevious());//从当前索引向前面
// Iterator it = list.iterator();
// while(it.hasNext()){
//
// Object obj = it.next(); //java.util.ConcurrentModificationException 在迭代器操作对象的过程中加入了集合对元素进行修改
// //在迭代器过程中 不要使用集合操作元素 容易出现异常
// if(obj.equals("abc2")){ //迭代器本身有局限性就3个操作
// //迭代器提供了ListIterator接口 只有list有 在迭代中对元素进行更多的操作
// list.add("abc9");
// }
// else
// System.out.println("next:"+obj);
// }
System.out.println(list);
// show(list);
}
private static void show(List list) {
list.add("abc1");
list.add("abc2");
list.add("abc3");
Iterator it = list.iterator();
while(it.hasNext()){
System.out.println("next:"+it.next());
}
//list特有的取出元素的方式之一
for (int i = 0; i < list.size(); i++) {
System.out.println("get:"+list.get(i));
}
}
}
/*
* List
* Vector 内部是数组数据结构1.0出现 1.2才有集合框架 增删查询都很慢 是同步的安全的 100%延长
* ArrayList 1.2内部是数组数据结构 增删慢 因为增删的时候要整个数组移动 查找元素快:因为都放在一个地方空间是连续的 是不同步的 替代了Vector 50%延长 本身 * 是数组就有索引
* LinkedList 内部是链表数据结构 不同步 增删快 因为直接给地址值 牵个手就完了 查询慢是因为一个个问下去 有角标 是List接口的子类 List都有角标
* 链表结构也能加标号(索引) 有编号 但还是要按照链表数据结构 标号不连续 一个个往下找
*/
最后
以上就是舒心蜜粉为你收集整理的javaseday补充16(迭代器 集合框架list有hasNext set去重无序 )的全部内容,希望文章能够帮你解决javaseday补充16(迭代器 集合框架list有hasNext set去重无序 )所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复