javaseday补充16(迭代器 集合框架list有hasNext set去重无序 )

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都有角标 
*  链表结构也能加标号(索引) 有编号 但还是要按照链表数据结构 标号不连续 一个个往下找
*/



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值