list和set、map的差别迭代器读取数据
package collectiondemo; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class TestIt { public static void main(String[] args) { // TODO 自动生成的方法存根 //常见的集合(线性的集合) //List接口就是线性存储的接口,并且是有序的 //实现线性的存储的接口的继承类:ArrayList,LinkedList,Vetor //ArrayList是类似于数组的存储,可以直接通过索引访问 List<Integer> list = new ArrayList<Integer>(); list.add(12); list.add(23); list.add(34); list.add(19); list.add(26); //LinkedList读取是通过链接点来读取的,读取效率较ArrayList低 //ArrayList读取数据效率高,但是对于的数据的删除和增加比LinkedList效率低 list= new LinkedList<Integer>(); list.add(12); list.add(23); list.add(34); list.add(19); list.add(26); System.out.println(list.get(2)); //Vetor的效率介于前两者之间的。它的是线程安全的。 } }
package collectiondemo; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Set; public class TestIt2 { public static void main(String[] args) { // TODO 自动生成的方法存根 //Set和Map的存储方式,两者都是无序的存储(底层都是无序的) //非线性存储的是不能通过索引访问 //无序不是按放进去的顺序读取的,按照hash的算法来排序的 //是不能存放重复的元素 Set<Integer> mysets = new HashSet<Integer>(); mysets.add(12); mysets.add(23); mysets.add(9); mysets.add(15); mysets.add(15); //访问非线性的需要迭代器 Iterator<Integer> its = mysets.iterator(); while(its.hasNext()){ System.out.println(its.next()); } //map的底层也是set,只是它的键是按照set无序存储的,也是不能重复的 Map<String,Integer> stumaps = new HashMap<String,Integer>(); stumaps.put("张三", 12); stumaps.put("李四", 22); stumaps.put("王五", 32); Set<String> keys= stumaps.keySet(); Iterator<String> keyits = keys.iterator(); while(keyits.hasNext()){ String key =keyits.next(); Object objvalue = stumaps.get(key);//通过键得到值 System.out.println("键:"+key+",值:"+objvalue); } } }