集合元素遍历

 Java遍历Set集合

对 set 的遍历

一般是迭代遍历:

Set<String> set = new HashSet<String>();

Iterator<String> it = set.iterator();

while (it.hasNext()) {

  String str = it.next();

  System.out.println(str);

}

for循环遍历:

for (String str : set) {

      System.out.println(str);

}

是不是简单些?

 

优点还体现在泛型 假如 set中存放的是Object

 

Set<Object> set = new HashSet<Object>();

for循环遍历:

for (Object obj: set) {

      if(obj instanceof Integer){

                int aa= (Integer)obj;

             }else if(obj instanceof String){

               String aa = (String)obj

             }

              ........

}

 list,set,map,数组互转

  •  

    1.listset

     

    Java代码  

    收藏代码

    1. Set set = new HashSet(new ArrayList());  

     

    2.setlist

     

    Java代码  

    收藏代码

    1. List list = new ArrayList(new HashSet());  

     

    3.数组转为list

     

    Java代码  

    收藏代码

    1. List stooges = Arrays.asList("Larry""Moe""Curly");  

     此时stooges中有有三个元素。注意:此时的list不能进行add操作,否则会报“java.lang.UnsupportedOperationException”Arrays.asList()返回的是List,而且是一个定长的List,所以不能转换为ArrayList,只能转换为AbstractList 

    原因在于asList()方法返回的是某个数组的列表形式,返回的列表只是数组的另一个视图,而数组本身并没有消失,对列表的任何操作最终都反映在数组上所以不支持remove,add方法的 

     

    Java代码  

    收藏代码

    1. String[] arr = {"1""2"};  
    2. List list = Arrays.asList(arr);  

     

     

    4.数组转为set

     

    Java代码  

    收藏代码

    1. int[] a = { 123 };  
    1. Set set = new HashSet(Arrays.asList(a));  

     

    5.map的相关操作。

    Java代码  

    收藏代码

    1. Map map = new HashMap();  
    2. map.put("1", "a");  
    3. map.put('2', 'b');  
    1. map.put('3', 'c');  
    1. System.out.println(map);  
    1. // 输出所有的值  
    1. System.out.println(map.keySet());  
    1. // 输出所有的键  
    1. System.out.println(map.values());  
    1. // map的值转化为List  
    1. List list = new ArrayList(map.values());  
    2. System.out.println(list);  
    1. // map的值转化为Set  
    1. Set set = new HashSet(map.values());  
    1. System.out.println(set);  

     

    6.list转数组

    Java代码  

    收藏代码

    1. List list = Arrays.asList("a","b");  
    2. System.out.println(list);  
    3.           
    4. String[] arr = (String[])list.toArray(new String[list.size()]);  
    1. System.out.println(Arrays.toString(arr));  
 

ArrayList使用remove注意事项


//在remove一条信息时,

ArrayList的大小已经改变(即list.size()已经改变);

在i大于等于list.size()时,循环跳出,后便的ArrayList不能再执行;

所以必须在remove的同时,执行i--,即i=i-1;

现在才能遍历所有List中的信息。也不能在用Iterator遍历时使用remove,会抛异常。

public class TrickyAL {

 

    

    public static LinkedList<User> llu=new LinkedList<User>();

    public static HashMap<String,User> hmu=new HashMap<String,User>();

    public static ArrayList<User> ulist=new ArrayList<User>(Arrays.asList

    (new User[]{

        

        new User(2,"Eric"),

        new User(3,"Eric"),

        new User(1,"Aaron"),

        new User(4,"Eric")

    

    }

    ));

    static{

        llu.add(new User(1,"Aaron"));

        llu.add(new User(2,"Eric"));

        llu.add(new User(3,"Tom"));

        hmu.put("1",new User(3,"Tom"));

        hmu.put("2",new User(2,"Eric"));

        hmu.put("3",new User(1,"Leo"));

        hmu.put("3",new User(4,"Scott"));

        

        

    }

    public static void deleteUser(ArrayList<User> urlist,String auser){

        

        Iterator itr=urlist.iterator();

        int c=urlist.size();

        

        for(int i=0;i<c;i++){

            if(auser.equals(urlist.get(i).name)){

                urlist.remove(i);

                i--;

                c--;

            }

        }

        

        

    }

public static void deleteUser(LinkedList<User> urlist,String auser){

        

        Iterator itr=urlist.iterator();

        int c=urlist.size();

        

        for(int i=0;i<c;i++){

            if(auser.equals(urlist.get(i).name)){

                urlist.remove(i);

                i--;

                c--;

            }

        }

        

        

    }

public static void deleteUser(HashMap<String,User> urlist,String auser){

    

    

    int c=urlist.size();

    Iterator hmi=urlist.entrySet().iterator();

    

    String ks="";

    for(String sk : urlist.keySet()){

        if(auser.equals(urlist.get(sk).name)){

            System.out.println(auser);

            ks=sk;

            break;

        }

    }

    urlist.remove(ks);

    

    

    

}

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        //ArrayList mul=(ArrayList)ulist;

        System.out.println(ulist);

        //deleteUser(ulist,"Eric");

        //Arrays.sort(ulist.toArray());

        System.out.println(ulist);

        

        System.out.println("2->"+llu);

        Collections.reverse(llu);

        deleteUser(llu,"Eric");

        System.out.println(llu);

        System.out.println("3->"+hmu);

        deleteUser(hmu,"Eric");

        

        System.out.println(hmu);

        Collections.copy(ulist,llu );

        System.out.println(ulist);

        System.out.println(llu);

    }

 

    public static class User{

        public int id;

        public String name;

        public User(int id,String name){

            this.id=id;

            this.name=name;

        }

        public String toString(){

            return String.valueOf(this.id)+","+this.name;

        }

        

    }

}

 



泛型工具类


  Class<T> entityClass = GenericsUtils.getSuperClassGenricType(BasicService.class, 0);

 


package com.shop.util;

 

import java.lang.reflect.ParameterizedType;

import java.lang.reflect.Type;

 

@SuppressWarnings("unchecked")

public class GenericsUtils {

// 通过反射,获得定义Class时声明的父类的泛型参数的类型

public static Class getSuperClassGenericType(Class clazz) {

return getSuperClassGenricType(clazz, 0);

}

 

// 通过反射,获得定义Class声明的父类的泛型参数的类型

public static Class getSuperClassGenricType(Class clazz, int index) {

Type genType = clazz.getGenericSuperclass();

if (!(genType instanceof ParameterizedType)) {

return Object.class;

}

Type[] params = ((ParameterizedType) genType).getActualTypeArguments();

if (index >= params.length || index < 0) {

return Object.class;

}

if (!(params[index] instanceof Class)) {

return Object.class;

}

return (Class) params[index];

}

} 







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值