集合框架总体结构学习心得

      java中,集合定义主要是在java.util*包下,常用的集合在系统中定义了三大接口,分别Set,List,Map。   

      List接口提供了有序的访问集合中元素的方法,所谓有序就是:可根据对象放入时的次序来查找对象。List接口中,常用的实现类是java.util.Vector和java.util.ArratList。测试代码如下:

public class ListTest {
	//主函数
	public static void main(String[] args){
		List<Object> list = new ArrayList<Object>();
		//添加元素
		list.add(1);
		list.add(3);
		list.add(1);
		list.add(2);
		//遍历输出
		for(int i = 0;i < list.size();i ++)
			System.out.println(list.get(i)+"");
		System.out.println(list);
	}
}

 得到的结果如下:

1
3
1
2
[1, 3, 1, 2]

        说明输出时的顺序与输入的先后顺序有关而与别的没有关系,这就是所谓的有序。而且List中可以同时存在相同的元素。需要注意的是,List是一个接口,所以我们需要通过它的子类比如ArrayList来实现。

        Set的对象不按特定的顺序排列,与你输入的顺序无关。同样,由于Set也是一个接口,所以我们通过HashSet来实现这个接口。由于set中元素是无序的,所以没有下标可言,我们需要通过迭代器来将其遍历输出。测试代码如下:

public class SetTest {
	public static void main(String[] args){
		Set<Object> set = new HashSet<Object>();
		set.add(1);
		set.add(2);
		set.add("aaa");
		set.add("ccc");
		set.add(4);
		set.add(1);
		//set迭代器
		Iterator<Object> it = set.iterator();
		//遍历
		while(it.hasNext())
			System.out.println(it.next());
                System.out.println(set);
 	}
}

 其结果如下:

1
2
aaa
4
ccc
[1, 2, aaa, 4, ccc]

        这说明set中的元素与输入的顺序是无关的,我们是用的hashset来实现的,所以元素按照hashset中的算法来排列。而且,set中的元素是不能够重复的。

        Map中存放两个元素:key和value。这两个对象是一一对应的关系,其中key值是唯一的,value的值允许相同,也就是一种映射的关系。测试代码如下:

      

public class MapTest {
	public static void main(String[] args){
		Map<Object,Object> map = new HashMap(); 
		map.put(1, 2);
		map.put("aaa", "bbb");
                map.put(3, 2);
		System.out.println(map);
		//得到map中所有key的值
		Set<Object> set = map.keySet();//keySet返回值是set类型
		Iterator<Object> it = set.iterator();
		//迭代key
		while(it.hasNext()){
			System.out.println(it.next());
		}
	}
}

 测试结果如下:

{1=2, 3=2, aaa=bbb}
1
3
aaa

 由于map也是无序的,所以keySet的返回值是set而不是list。

 

      

你可能感兴趣的:(list,map,set)