Iterator的用法
Iterator的用法分类
//hasNext判断是否有下一个元素
推荐使用
while(iterator.hasNext()){
//next() 指针下移 将下移后集合位置上的元素返回
system.out.println(iterator.next());
}
移除元素
实体类 pojo
person类
package com.atguigu.java8;
public class Person {
public String name;
public int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
测试迭代
package com.atguigu.java8;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class iterator {
@Test
public void test3(){
Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new Person("jerry",20));
coll.add(new String("Tom"));
coll.add(false);
Iterator iterator = coll.iterator();
while (iterator.hasNext()){
Object object = iterator.next();
if ("Tom".equals(object)){
iterator.remove();
}
}
Iterator iterator1 = coll.iterator();
while (iterator1.hasNext()){
System.out.println(iterator1.next());
}
}
}
foreach
package com.atguigu.java8;
//JDK5.0 新增了foreach循环,用于遍历集合,数组
import org.junit.Test;
import java.util.ArrayList;
import java.util.Collection;
public class foreach {
@Test
public void test1() {
Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new Person("jerry", 20));
coll.add(new String("Tom"));
coll.add(false);
//for(集合元素的类型 局部变量 集合对象)
for (Object obj : coll) {
System.out.println(obj);
}
}
@Test
public void test2() {
int[] arr = new int[]{1, 2, 3, 4, 5, 6};
//for(数组元素的类型,局部变量:数组对象)
for (int i : arr) {
System.out.println(i);
}
}
//练习题
@Test
public void test3() {
String[] arr = new String[]{"MM", "MM", "MM"};
//方法1;普通for赋值
for (int i = 0; i < arr.length; i++) {
arr[i] = "GG";
}
//方式2;增强for循环
for (String s : arr) {
s = "G";
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
数组和链表的区别
二者都属于bai一种数据结构
从逻辑结du构zhi来看
- 数组必须事先定义固dao定的长度(元素个数)zhuan,不能适shu应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费;数组可以根据下标直接存取。
- 链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项,非常繁琐)链表必须根据next指针找到下一个元素
从内存存储来看 - (静态)数组从栈中分配空间, 对于程序员方便快速,但是自由度小
- 链表从堆中分配空间, 自由度大但是申请管理比较麻烦
从上面的比较可以看出,如果需要快速访问数据,很少或不插入和删除元素,就应该用数组;相反, 如果需要经常插入和删除元素就需要用链表数据结构了。