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
}
........
}
1.list转set
Java代码
2.set转list
Java代码
3.数组转为list
Java代码
此时stooges中有有三个元素。注意:此时的list不能进行add操作,否则会报“java.lang.UnsupportedOperationException”,Arrays.asList()返回的是List,而且是一个定长的List,所以不能转换为ArrayList,只能转换为AbstractList
原因在于asList()方法返回的是某个数组的列表形式,返回的列表只是数组的另一个视图,而数组本身并没有消失,对列表的任何操作最终都反映在数组上. 所以不支持remove,add方法的
Java代码
4.数组转为set
Java代码
5.map的相关操作。
Java代码
6.list转数组
Java代码
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];
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容