JavaSE中的容器

概述:容器包括Collection和Map。Collection存储对象,Map存储键值对。

一. Collection接口

Collection包括两个子接口,List、Set


1. List接口:有序、可重复的容器
  • ArrayList:使用数组实现存储,
  private Object[] elementDate;//定义Object数组和长度size

  private static final int DEFALT_CAPACITY=10;//设定初始化长度10

add()方法

public void add(E e){
    //数组扩容
    if(size == elementDate.length){
        Object[] newarr = new Object[elementDate.length(elementDate.length>>1)];//10-->10+(10/2)
        System.arraycopy(elementDate, 0, newarr, 0, elementDate.length);
        elementDate = newarr;
    }
    elementDate[size++] = e;
}
  • LinkedList:使用双向链表实现存储
 class  Node {
    Node  previous;     //前一个节点
    Object  element;    //本节点保存的数据
    Node  next;         //后一个节点
}
  • Vector:用数组实现的List,线程安全
2. Set接口:无序、不可重复。Set加入元素实际上是把元素放入Map的Key处
  • HashSet:无序
  • TreeSet:内部进行排序(使用compareTo()方法)

二. Map接口

存储键(key)-值(value) 对。Map的实现类包括:HashMap、TreeMap、HashTable、Properties

  • HashMap:键不能重复,如果发生重复,新的键值对会替换旧的键值对
  • HashTable

三. 迭代器

  1. 迭代器遍历List
 List<String> list = new ArrayList<String>();
for (Iterator<String> iter = list.iterator(); iter.hasNext();) {
        String temp = iter.next();
        System.out.print(temp + "\t");
        }
  1. 迭代器遍历Set
Set<String> set = new HashSet<String>();
for (Iterator<String> iter = set.iterator(); iter.hasNext();) {
        String temp = iter.next();
        System.out.print(temp + "\t");
}
  1. 迭代器遍历Map
Map<String, String> map = new HashMap<String, String>();
//方法一
Set<Entry<String, String>> set= map.entrySet();
for (Iterator<Entry<String, String>> iterator = set.iterator(); iterator.hasNext();) {
        Entry<String, String> entry = iterator.next();
        System.out.println(entry.getKey() + "--" + entry.getValue());
}
//方法二
Set<String> ss = map.keySet();
for (Iterator<String> iterator = ss.iterator(); iterator.hasNext();) {
        String key = iterator.next();
        System.out.println(key + "--" + map.get(key));
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Collection ├List │├LinkedList │├ArrayList │└Vector │└Stac...
    AndyZX阅读 4,346评论 0 1
  • hashmap实现的数据结构,数组、桶等。 如图所示 JDK 1.7,是以数组+链表组成的,链表为相同hash的键...
    不需要任何阅读 4,260评论 0 1
  • 简介 1.所有的集合类都位于java.util包下,Java的结合主要由两个接口类派生出来,分别是Collecti...
    yunqing_71阅读 7,263评论 0 2
  • 集合类框架的介绍: ![Java 集合类框架](https://upload-images.jianshu.io/...
    LynnGuo阅读 4,071评论 0 1
  • 在编程中,常常需要集中存放多个数据。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。所有的集合类都位于...
    一一一二二三阅读 3,106评论 0 1