一个程序的运行,其实就是数据在做着不断的变化,基本数据类型有8种,byte short int long char boolean float double 这些数据可以用数组来存储,数组中存放的是基本数据类型,引用类型的该如何存储呢?首先引用类型包括:类,数组,接口 可以用集合来存储。集合容器因为数据结构不同,不断向上抽取,形成集合框架,框架的顶层是collection接口,既然是顶层接口就有子接口和实现该接口的类,其中List 接口中存储的元素可重复,是有序的,可以对列表中的每个元素精确的定位。而Set接口的存储的元素不允许重复,是无序的,和collection接口中的方法一致
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
class Student2{
String name;
int age;
Student2(String n,int a){
this.name=n;
this.age=a;
}
public String toString(){
return "姓名:"+name+"年龄:"+age;
}
}
public class CollectionDemo {
public static void main(String[] args) {
List<Student2> list=new ArrayList<Student2>();//接口子类实例化
//向集合中添加student对象
list.add(new Student2("mike",23));
list.add(new Student2("lili",21));
list.add(new Student2("keko",24));
list.add(new Student2("lili",21));
//添加元素后的集合,允许重复元素
System.out.println("list:"+list);
//移除第0角标元素
list.remove(0);
//修改1角标元素为指定元素
list.set(1, new Student2("wangcai",20));
//获取0角标元素
list.get(0);
//获取指定元素第一次出现的位置
int a=list.indexOf(new Student2("lili",21));
System.out.println(a);
//判断
list.isEmpty();
list.contains(new Student2("keko",24));
//其它
list.size();
list.toArray();
System.out.println("修改后的list:"+list);
Set<Integer> set=new HashSet<Integer>();//接口子类实例化 HashSet内部数据结构是哈希表
//向集合中添加Integer类型对象
set.add(1);
set.add(3);
set.add(4);
set.add(1);
//添加元素后的集合,允许重复元素
System.out.println("set:"+set);
//删除
set.remove(1);
//判断
set.contains(3);
set.isEmpty();
//其它
set.size();
set.toArray();
System.out.println("修改后的set:"+set);//集合中的元素不允许重复。
}
}
list和set接口中都有对数据添加,删除,获取,判断的功能,list集中有修改set()功能,而set集合中没有修改功能,其中他们都有带有一个迭代器功能,返回集合中的所有元素。iterator不仅具有迭代功能还是一个接口类型,list集合中不单有iterator 还有接口的子接口listIterator,Ierator只有hasNext() next() remove()的功能,所以在迭代过程中不能对集合中的元素进行增加或修改等,而listIterator则具有这个功能,有添加和修改add() set() 还有逆向遍历hasPrevious(); previous(); nextIndex(); previousIndex()
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorDemo {
public static void main(String[] args) {
List<Character> list=new ArrayList<Character>();
list.add('a');
list.add('b');
list.add('c');
list.add('d');
Iterator<Character> it=list.iterator();
while(it.hasNext()){
Object b=it.next();//java.util.Concurrent Modification Exception并发修改异常
if(list.contains('b')){
list.remove(b);
}
System.out.print(b);
}
}
}
在迭代list集合时,对集合中的元素进行操作,迭代器并不知道,会引起并发修改异常
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class IteratorDemo {
public static void main(String[] args) {
List<Character> list=new ArrayList<Character>();
list.add('a');
list.add('b');
list.add('c');
list.add('d');
ListIterator<Character> it=list.listIterator();
while(it.hasNext()){
Character cc=it.next();
if(cc.equals('a')){//如果迭代返回的元素有‘’
it.set('e');//修改为'e'
}
}
System.out.print(list);
}
}