集合

之前我们了解过数组,数组是用来存放数据的。可是还有一个可以用来存放数据的容器,我们称作集合。既然两者都是用来存放数据的容器,那么他们有什么区别呢:

1. 数组的长度是固定的。

        集合的长度是可变的。

2.集合只能存放引用类型的元素。

说到这里,下面让我们全面了解下集合。

 

在集合中,Collection接口是集合中的顶层接口。用图来表示就是

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ArrayList

      通俗点说Collection是List的父亲,而List又是Array的父亲。所以按照集继承体系来说,Colletion有的方法,ArrayList也有。

          比如说常用的:

                      add(E e) : 添加元素

                      clear():清除元素

                   contains(Object o) :如果此 collection 包含指定的元素,则返回 true。

                   iterator() :返回在此 collection 的元素上进行迭代的迭代器。

 

代码:

 

       

import java.util.ArrayList;

import java.util.Iterator;

 

public class ArrayListDemo {

 

public static void main(String[] args) {

 

ArrayList< String> arrayList = new ArrayList<String>();

//添加元素

arrayList.add("张三");

arrayList.add("李四");

arrayList.add("王五");

Iterator<String> it = arrayList.iterator();

while(it.hasNext()){

System.out.println(it.next());

}

 

}

}

运行结果:

       张三

李四

王五

         ArrayList 可变数组的实现,集合数据存储的结构是数组结构,元素增删慢,查找快。

在业务需求中,如果用到查找多一些就用ArrayList;如果是增删多一些,就用LinkedList。这个我们接下来就会介绍。

 

 

LinkedList

     同ArrayList,LinkedList也是从Collection继承下来的,但是它也有自己特殊之处。

上面已经说到了,LinkedList增删快,查找慢。因为它是单链表,如果要查找的话,就要一个一个地去遍历。

       但是它提供了大量的首尾操作,有自己单独的方法。

比如:addFirst();在集合头部添加元素  addLast();在集合尾部添加元素

 

代码:

     package lesson06;

 

import java.util.LinkedList;

 

public class LinkedListDemo {

 

public static void main(String[] args) {

LinkedList<String> link = new LinkedList<String>();

link.addFirst("张三"); //在头部添加

link.addFirst("李四");

link.addFirst("王五");

link.addLast("赵六");  //在尾部添加

System.out.println(link);

}

}

运行结果:

          [王五, 李四, 张三, 赵六]

 

 

迭代器:Java中提供了多个集合,他在存储元素时,采用的存储方式不同,我们要取出这些集合中的元素,课通过一种通用的获取方式来完成。

Collection集合元素通用获取方式:在取元素之前要先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就在取出来。一直把集合的所有全部取出。这种取出专业术语称为迭代

 

 

Set

ArrayList中可以添加重复的元素,那么有没有不能重复添加的呢?

Set中存放的元素不会重复,而且它是无序存放的。

Set集合取出元素的方式可以采用迭代器因为set是没有索引的

代码:

package lesson06;

 

import java.util.HashSet;

import java.util.Iterator;

import java.util.Set;

 

public class SetDemo {

 

public static void main(String[] args) {

Set<String> set = new HashSet<String>();

set.add("老大");

set.add("老二");

set.add("老三");

set.add("老四");

Iterator<String> it = set.iterator();

while(it.hasNext()){

System.out.println(it.next());

}

}

}

 运行结果:

          老三

老四

老大

老二

 

 

 

Map

   Map接口与collection是同一级别的顶层容器。只不过collection中的元素是单独存放的,而map中的元素是成对存放的。里面涉及到键,通过键来寻找值。

需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值

Map中常用的集合为HashMap集合,LinkedMap集合。

代码:

package lesson06;

 

import java.util.HashMap;

import java.util.Iterator;

import java.util.Set;

 

 

public class MapDemo {

 

public static void main(String[] args) {

HashMap<Integer, String> hashMap = new HashMap<Integer, String>();

  hashMap.put(1, "张三");

  hashMap.put(2, "李四");

  hashMap.put(3, "王五");

// 获取HashMap的set集合

  Set<Integer> keyset = hashMap.keySet();

// 获取set的迭代器

  

  Iterator<Integer> it = keyset.iterator();

  while(it.hasNext()){

  int key = it.next();

  System.out.println(hashMap.get(key));

  }

  

}

}

 

运行结果:

          张三

          李四

          王五

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值