Java中的容器

    Java中的容器就跟我们生活中的容器差不多,常常我们根据我们要装的东西来选择容器,在Java中我们也是根据我们需要存储的数据类型来选择容器,那么究竟容器有那些呢?

    下面我来简单的画个图:

 首先谈Collection,它里面有很多抽象方法,可以看到,它是在最顶层的一个接口,它的所有子类都必须去实现它里面的方法,它里面的抽象方法有:

 接下来我们再看Set接口,Set接口有一个特点,里面的元素是无序的而且不可重复。

public class SetDemo {
	 public static void main(String[] args) {
		Set s1 = new HashSet();
		Set s2 = new HashSet();
		s1.add("a");
		s1.add("b");
		s1.add("c");
		s1.add("d");
		s2.add("d");
		s2.add("b");
		s2.add("e");
		s2.add("f");
		
		Set sn = new HashSet(s1);
		System.out.println(sn);
		sn.retainAll(s2);    //求交集
		System.out.println(sn);
	}
}

输出结果是:

[d, b, c, a]
[d, b]

List接口下面我们可以看到它的下面还有两个子接口,LinkedList和ArrayList,他们的底层实现方式不同,LinkedList底层是用链表实现的,而ArrayList底层是用数组实现的,用户可以根据需要来选择使用那种,对数据的删除和插入操作比较频繁的话,那么用链表比较好,而对数据的只是普通的读取输出那么用数组比较好。

Map接口,

用于存放键值对的集合,可以通过键找到对应的值。

我们在学数据结构的时候,都知道数据和链表的优缺点,对数据操作比较频繁的话用链表,对数据的读取频繁的话用数组,他们各有优缺点,Map就位于他们两个中间。

Map的抽象方法:

 它的用法:

public class MapDEMO {
	public static void main(String[] args) {
		Map m1 = new HashMap();
		Map m2 = new HashMap();
		
		m1.put(1, "one");
		m1.put(2, "two");
		m1.put(3, "three");
		
		m2.put("a", 1);
		m2.put("b", 2);
		m2.put("c", 3);
		System.out.println(m1.size());
		System.out.println(m1.containsKey(1));
		System.out.println(m2.containsValue(1));
		
	}
}

 我们可以根据键,去找到值。

其实对于容器中有一个很重要的操作,那就是遍历,那么多种集合我们有没有一个统一的遍历方式,肯定有的,那就是Ierrator迭代器。在我的博客中有一篇专门讲迭代器的,建议大家去看一下,很有帮助的。

其实还有一个泛型,我前面没讲过,那么泛型究竟是干嘛用的?

在以前,并没有泛型的概念,那么用户在用集合向存储某一种自定义对象的时候,都是用Object,我们知道Object是所有类的父类,那么存进去之后,他就会丢失自己本身的属性,所以后来就有了泛型,泛型就是规定了你只能存储你特定的某一种数据类型。

public class FanXing {
	public static void main(String[] args) {
		Collection<String> c1 = new ArrayList<String>(); 
		c1.add("adsas");
		c1.add("ad");
		c1.add("adsa");
		
		Iterator<String> i = c1.iterator();
		while(i.hasNext()){
			String s = i.next();
			System.out.println(s);
		}
		
		Map m1 = new HashMap<String, Integer>();
		m1.put("a", 1);
		m1.put("b", 2);
		m1.put("c", 3);
		
		System.out.println(m1.size());
	}
	

像我在Collection<String> c1 = new ArrayList<String>(); 这一条语句中使用了泛型,那么c1就只能存储String类型的元素。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值