本帖最后由 燿陚√揚葳 于 2014-7-8 12:06 编辑
不知道大家开始学习集合的时候有没有被绕晕了,总结一下分享给大家,看看还有没有要补充的了
1.List集合的遍历方式:
- <P>public class CollectionDemo {
- //集合元素的获得
- public static void method_get(){
- ArrayList al=new ArrayList();
- al.add("java001");
- al.add("java002");
- al.add("java003");
- al.add("java004");
- /*第一种方式,这样写比第二种便于观看
- Iterator it=al.iterator();//获取迭代器,用于取出集合中的元素
- while(it.hasNext()){
- sop(it.next());
- }
- */
- //第二种方式,这样更节省内存空间
- for(Iterator it=al.iterator();it.hasNext();){
- sop(it.next());
- }
- }
- //第三种高级for循环
- for(Object sl:al){
- System.out.print(sl);
- }
- public static void sop(Object obj){
- System.out.println(obj);
- }
- public static void main(String[] args) {
- method_get();
- }
- }
- <P> </P>
复制代码 如果想要其他的操作如添加,修改等就需要使用其子接口,ListIterator 该集合只能通过List集合的ListIterator方法获取- public class MapTest {
- public static void main(String[] args) {
- /*
- * 如果想要其他的操作如添加,修改等就需要使用其子接口,ListIterator
- * 该集合只能通过List集合的ListIterator方法获取
- *
- */
- //演示列表迭代器
- ArrayList al=new ArrayList();
- al.add("java01");
- al.add("java02");
- al.add("java03");
- al.add("java04");
- ListIterator lt=al.listIterator();
- while(lt.hasNext()){
- Object obj=lt.next();
- if(obj.equals("java04"))
- // lt.add("java05");
- lt.set("java");
- }
- sop(al);
- sop("hasPrevious:"+lt.hasPrevious());//true
- sop("hasNext:"+lt.hasNext());//false
- }
- public static void sop(Object obj){
- System.out.println(obj);
- }
- }
复制代码
枚举的- public class VectorDemo {
- public static void main(String[] args) {
- Vector al=new Vector();
- al.add("java01");
- al.add("java02");
- al.add("java03");
- al.add("java04");
- Enumeration e=al.elements();
- while(e.hasMoreElements()){
- sop(e.nextElement());
- }
- }
- public static void sop(Object obj){
- System.out.println(obj);
- }
- }
复制代码
2.Set集合的遍历
TreeSet和HashSet遍历一样
- <P>public static void main(String[] args) {
- HashSet hs=new HashSet();
- //元素唯一,有重复的元素不会添加进去
- sop(hs.add("java01"));//返回true
- sop(hs.add("java01"));</P>
- <P>hs.add("java02");
- hs.add("java03");
- hs.add("java04");
- hs.add("java03");
- hs.add("java04");
- //Set 接口取出的方式只有一种,迭代器(高级for循环除外)
- Iterator it=hs.iterator();
- while(it.hasNext()){
- sop(it.next());
- }</P>
- <P>for(Object s:ts){
- System.out.println(s);
- }
- }</P>
复制代码
3.Map集合的遍历方式
第一种:Set<k>keySet:将Map中所有的键存入到Set集合,因为Set具备迭代器
所以可以用迭代方式取出所有的键,再根据get方法,获取每一个键对应的值
Map集合的取出原理,将Map集合转成Set集合,再通过迭代器取出- public class Coo {
- public static void main(String[] args){
- Map<String,String> m=new HashMap<String,String>();
- m.put("01","java01");
- m.put("02", "java02");
- m.put("03","java03");
- //先获取Map集合的所有键的Set集合,keySet()
- Set<String> st=m.keySet();
- //有了Set集合就可以获取其迭代器
- Iterator<String> it=st.iterator();
- while(it.hasNext()){
- String key=it.next();
- //有了键可以通过Map集合的get方法获取其对应的值
- String value=m.get(key);
- sop("key:"+key+"***value:"+value);
- }
- }
- public static void sop(Object obj){
- System.out.println(obj);
- }
复制代码
第二种:Set<Map.Entry<k,v>>entrySet:将Map集合中的映射关系存入到了Set集合中。 而这个关系的数据类型就是:Map.Entry- public static void main(String[] args){
- Map<String,String> m=new HashMap<String,String>();
- m.put("01","java01");
- m.put("02", "java02");
- m.put("03","java03");
- //将Map集合中的映射关系取出,存入到Set集合中
- //Map.Entry是一个关系对象
- Set<Map.Entry<String, String>> entrySet=m.entrySet();
- Iterator <Map.Entry<String, String>> it=entrySet.iterator();//Set泛型是什么这里就是什么
- while(it.hasNext()){
- Map.Entry<String, String> me=it.next();
- String key=me.getKey();
- String value=me.getValue();
- sop("key:"+key+"***value:"+value);
- }
- }
- public static void sop(Object obj){
- System.out.println(obj);
- }
复制代码
第三种:高级for循环
for(数据类型 变量名:被变量的集合(Collection)或者数组){
Map集合遍历时三种方法,都是要将Map先转换成Set集合
- public static void main(String[] args) {
- HashMap<Integer,String> hm=new HashMap<Integer,String>();
- hm.put(1,"a");
- hm.put(2,"b");
- hm.put(3,"c");
- // for(Map.Entry<Integer,String> me:hm.entrySet()){
- // System.out.println(me.getKey()+"**********"+me.getValue());
- // }
- Set<Integer> keySet=hm.keySet();
- for(Integer in:keySet){
- System.out.println(in+"***"+hm.get(in));
- }
- }
复制代码
|