集合框架心得

Collection接口是Collection层次框架的根接口,其实现类有ArrayList,LinkedList,HashSet,TreeSet.

下面是collection共有的增,删,判断及遍历方法

	public static void colletionMethod(){
		Collection<String> c = new ArrayList();
		c.add("java01");//增加
		c.add("java02");
		c.add("java03");
		c.add("java04");
		System.out.println(c.contains("java01"));// 判断是否包含
		System.out.println(c.remove("java02"));//删除
		for(Iterator<String> it = c.iterator();it.hasNext();){//遍历
			System.out.println(it.next());
		}
		c.clear();//移除集合中的所有元素
	}


List接口:元素是有序的,元素可以重复,因为该集合有索引,List中contains()方法调用的是对象的equals()方法

子类有ArrayList,TreeList

实现List接口的类可对索引进行操作

		List list = new ArrayList();
		list.add("java01");
		list.add("java02");
		list.add("java03");
		list.add(1, "java001");//在指定位置插入元素
		list.set(2, "java002");//将指定位置元素改为java002
		list.get(0);//获取指定位置元素
		list.remove(0);//获取并移除指定位置元素

ArrayList:数组结构 查询快 增删慢

LinkedList:链表数据结构 查询慢 增删快

下面是LinkedList的一些常用方法,同时有自己独有的迭代方式

public class Test4 {
	public static void main(String[] args) {
		LinkedList<String> list = new LinkedList<String>();
		list.addFirst("java01");//将元素插入到列表的开头
		list.addFirst("java02");
		list.addLast("java03");
		list.addLast("java04");//将元素插入到列表的末尾
		System.out.println(list);
		System.out.println(list.peekFirst());//获取但不移除第一个元素
		System.out.println(list);
		System.out.println(list.pollFirst());//获取并移除第一个元素
		System.out.println(list);
	}
}
		for(ListIterator<String> it = list.listIterator();it.hasNext();){
			String curr = it.next();
			if("java01".equals(curr)){
				it.add("java002");//增加元素
				
			}
			if("java03".equals(curr)){
				it.set("java003");//修改元素
			}
			System.out.println(curr);
		}
		System.out.println(list);
	}


Set接口:无序,元素不可重复 子类有HashSet,TreeSet

HashSet:数据结构是哈希表 判断重复是先比较hashcode再调用equals方法

注意:当对象存储到hash集合中,对象中参与hashcode运算的字段就不能再更改了,否则无法在集合中删除该对象,造成内存泄漏。

TreeSet:可排序,底层数据结构二叉树 保证元素唯一性的依据是对象的compareTo()方法,其排序的实现

  • TreeSet()
              构造一个新的空 set,该 set 根据其元素的自然顺序进行排序,存入对象必须实现Comparable接口
  • TreeSet(Comparator<? superE> comparator)
              构造一个新的空 TreeSet,它根据指定比较器进行排序。

Map接口:键值对, 不能包含重复的键 子类有HashMap,TreeMap

Map的迭代方式有两种:

  1. 得到键构成的Set结构,对Set进行迭代
    		Map<String,String> map = new HashMap<String,String>();
    		map.put("01", "张三");
    		map.put("02", "李四");
    		map.put("03", "王五");
    		Set<String> keySet = map.keySet();
    		for(Iterator<String> it = keySet.iterator();it.hasNext();){
    			String key = it.next();
    			System.out.println("key:"+key+"value:"+map.get(key));
    		}
  2. 得到封装映射关系的Set结构,再对其迭代
    		Set<Map.Entry<String, String>> entrySet = map.entrySet();
    		for(Iterator it = entrySet.iterator();it.hasNext();){
    			Map.Entry<String, String> entry = (Entry<String, String>) it.next();
    			System.out.println(entry.getKey()+"value:"+entry.getValue());
    		}

HashMap:哈希数据结构,可以存null键null值

注意:当对象存储到hash集合中,对象中参与hashcode运算的字段就不能再更改了,否则无法在集合中删除该对象,造成内存泄漏。

TreeMap:二叉树数据结构 可以用于给Map集合中的键进行排序 它的排序方式和TreeSet类似。

Collections 是集合框架类的工具类。提供了将集合类变成同步的方法,顺序反转,比较器反转等功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值