集合

一、什么是集合?

集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)

二、为什么要集合?

然而在我们的开发实践中,经常需要保存一些变长的数据集合,于是,我们需要一些能够动态增长长度的容器来保存我们的数据。

三、集合与数组的区别?

(1)数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型)

(2)JAVA集合可以存储和操作数目不固定的一组数据。

(3)若程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库

四、集合的结构:


五、集合的三种类型:

①、List

  01.ArrayList

数组结构:查询快,增删改慢

List<String> list=new ArrayList<String>();
		list.add("A");
		list.add("B");
		list.add("C");
		list.add("A");
		System.out.println("集合长度为:"+list.size());
		for (String string : list) {
			System.out.println(string);
		}

输出结果为:


02.LinkedList(案例:贪吃蛇)

链表结构: 查询慢,增删改快

含有特殊的方法:

增加头addFirst(“”);增加尾addLast("");  移除头removeFirst(“”);移除尾removeLast(“”);

LinkedList<String> list1=new LinkedList<String>();
		list1.add("A");
		list1.add("B");
		list1.add("C");
		list1.add("A");
		list1.addFirst("第一");
		list1.addLast("末尾");
		list1.removeFirst();
		for (String strings : list1) {
			System.out.println(strings);
		}
输出结果为:

03.Vector

   增删改查慢  (目前已经被淘汰)

②、Set(案例:手机联系人)

 

01.HashSet

(可以加空值)

		HashSet<String> hashSet=new HashSet<String>();
		hashSet.add("A");
		hashSet.add("S");
		hashSet.add("C");
		hashSet.add("B");
		hashSet.add(null);
		for (String string : hashSet) {
			System.out.println(string);
		}
输出结果为:



02.TreeSet

(不可加空值)

 

TreeSet<String> treeSet=new TreeSet<String>();
		treeSet.add("a");
		treeSet.add("c");
		treeSet.add("d");
		treeSet.add("b");
		for (String string : treeSet) {
			System.out.println(string);
		}
输出结果为:


③、Map(键值对)


1.HashMap

(可以加空值)(无序)

2.HashTable

(不可加空值)(无序)

3.TreeMap

(可以加空值)(有序)

 

④.迭代Map(迭代==遍历)遍历的三种方式

	Map<String, Object> map=new HashMap<String, Object>();
		map.put("A","1");
		map.put("B","2");
		map.put("C","3");
		map.put("D","4");
		map.put("E","5");


4.1获取所有的键,在根据键拿到值

	Set<String> str1=map.keySet();
		for (String string : str1) {
			System.out.println(string);
		}
		

输出结果为:


4.2获取所有的值

	Collection<Object> collection=map.values();
		for (Object object : collection) {
			System.out.println(object);
		}
		
输出结果为:

4.3获取键和值(一个一个)

	Set<Entry<String, Object>> se=map.entrySet();
		for (Entry<String, Object> entry : se) {
			System.out.println(entry);
		}
输出结果为:

List和set对比:

Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。无序,有排序,不可重复。

 List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。有序,无排序,可重复。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值