List和Map集合

---List,Set继承Collection接口,Map没有。
List:元素有放入顺序,元素可重复,允许任意数量的空值
Set:元素无放入顺序,元素不可重复,最多允许一个空值
Map:元素无放入顺序,key不可重复,value可以重复,只允许出现一个空键但允许任意数量的空值

---常用实现类
List:ArrayList、LinkedList等等
Set:HashSet、LinkedHashSet、TreeSet、SortedSet等等
Map:HashMap、TreeMap、WeakHashMap、LinkedHashMap、IdentityHashMap等等

---List集合
1.初始化
List<String> list = new ArrayList<String>();
List<String> list = new LinkedList<String>();

2.添加
list.add(E element);
list.add(int index,E element)

3.获取
list.get(int index);

4.修改
list.set(int index,E element);

5.删除
list.remove(int index);
list.remove(E element);

6.遍历
增强for循环
for(String str : list) {
System.out.println(str);
}

普通for循环
for( int i = 0 ; i < list.size() ; i++) {
System.out.println(list.get(i));
}

迭代器遍历
Iterator<String> iter = list.iterator();
while(iter.hasNext()){
System.out.println(iter.next());
}

7.判断是否包含某个元素,返回true或flase
list.contains(E element);

8.获取索引的位置,当不存在时返回-1
list.indexOf(E element); //第一个
list.lastIndexOf(E element); //最后一个

9.利用list中索引的位置重新生成一个新的list,即截取集合,包前不包后
list.subList(int fromIndex,int toIndex);

10.对比两个list中的所有元素
两个相等对象的equals方法一定为true, 但两个hashcode相等的对象不一定是相等的对象

11.判断list是否为空,空则返回true,非空则返回false
list.isEmpty();

12.将集合转换为字符串
list.toString();

13.将集合转换为数组
list.toArray();
如:
int size = list.size();
String[] str = (String[])list.toArray(new String[size]);

14.去重
HashSet hashSet = new HashSet(list);
list.clear();
list.addAll(hashSet);

15.1.虚拟类无法接收list的解决方法
复杂对象不能直接转换的原因可以参看下这个帖子:http://blog.sina.com.cn/s/blog_72ef7bea0102vdty.html

修改两个地方:
Js中:
$.ajax({
url : '../attendGroup/save',
type : 'post',
data : {
},

$.ajax({
url : '../attendGroup/save',
type : 'post',
contentType:”application/json”,
data : JSON.stringify({
}),
Controller中:
@RequestMapping("/save")
@ResponseBody
public Object save(AttendGroupVo attendGroupVo) throws ServiceException {

@RequestMapping("/save")
@ResponseBody
public Object save(@RequestBody AttendGroupVo attendGroupVo) throws ServiceException {

16.List转化为Map,可进行不同类型的修改
List<EmployeeVo> employeeList = employeeService.excelList(condition);
//list转化为map,并添加字段
List<Map> listData = new ArrayList<>();
Map employeeVoMap;
for(EmployeeVo employee : employeeList){
employeeVoMap = BeanUtils.describe(employee);
if(employee.getExamine()==1){
employeeVoMap.put("examineCHN", "已审核");
}else{
employeeVoMap.put("examineCHN", "未审核");
}
listData.add(employeeVoMap);
}

---Map集合
1.初始化
Map<String,String> map = new HashMap<String,String>();

2.添加
map.put(Object key,Object value);

3.获取
map.get(Object key);

4.修改,即重新添加
map.put(Object key,Object value);

5.删除
map.remove(Object key);
删除所有
map.clear();

6.是否包含某个元素
map.containsKey(Object Key); //如果Map包含指定键的映射,则返回true
map.containsValue(Object value); //如果此Map将一个或多个键映射到指定值,则返回true
map.isEmpty(); //如果Map不包含键-值映射,则返回true
map.size(); //返回Map中的键-值映射的数目

7.将指定map中所有映射复制到此map
map.putAll(Map t)

8.遍历
方法1:
for(String str : map.keySet()) {
String value = map.get(str);
System.out.println(value);
}
方法2:
Set set = map.keySet();
for(Iterator iter = set.iterator(); iter.hasNext();){
String key = (String)iter.next();
String value = (String)map.get(key);
System.out.println(key+"=="+value);
}

方法3:
Set set = map.entrySet();
for(Iterator iter = set.iterator(); iter.hasNext();){
Map.Entry entry = (Map.Entry)iter.next();
String key = (String)entry.getKey();
String value = (String)entry.getValue();
System.out.println(key +"==" + value);
}

方法4:
//获取所有的key和value
for(Map.Entry<String,String> entry : map.entrySet()){
System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());
}

//获取所有的key
Set<String> keys = map.keySet();
for(String key: keys){
System.out.println(key);
}

//获取所有的value
Collection<String> values = map.values();
for(String value: values){
System.out.println(value);
}

posted @ 2018-01-17 15:28  gfbceo  阅读(125)  评论(0编辑  收藏  举报