美文网首页
Java 集合框架

Java 集合框架

作者: Jack_6a46 | 来源:发表于2018-09-25 20:57 被阅读0次

Java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。
Java集合工具包位置是 java.util.*;
Java集合主要可以划分为4个部分:List列表, Set集合, Map映射, 工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)

Collection接口

·是List, Set和Queue接口的福接口
·定义了可用于操作List, Set和Queue的方法。

List接口

·List是元素有序并且可以重复的集合,被称为序列
·List可以精确的控制每个元素的插入位置,或删除某个位置元素
·List接口的常用子类:ArrayList, LinkedList, Vector, Stack.

Set接口

·Set接口中不能加入重复元素,无序
·Set接口常用子类:
散列存放:HashSet
有序存放: TreeSet

Map和HashMap

·Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value.
·Map中的键值对以Entry类型的对象实例形式存在
·键不能重复,value值可以重复
·Map支持范型,形式如:Map.
HashMap类
·HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现
·HashMap中的Entry对象是无序排列的
·key值和value值都可以为null, 但是一个HashMap只能有一个key值为null的映射。

Java提供了Dictionary,Vector,Stack和Properties这些类用来存储和操作对象组。
Java集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。
Collection 接口又有三种子类型,List, Set, 和Queue,再下面是一些抽象类,最后是具体实现类,常用的有ArrayList,LinkedList, HashSet, HashMap等等。
集合框架是用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容:
1.接口
2.实现类
3.算法

Java集合框架提供了一套性能优良,使用方便的接口和类,java集合框架位于java,util包中,所以当使用集合框架的时候需要进行导包。

集合接口

Set和List的区别:
1.Set接口实例存储的是无序的,不重复的数据。List接口实例存储的是有序的,可以重复的元素。
2.Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。
3.List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入效率低,因为会引起其他元素位置的改变。

集合实现类(集合类)

Java提供了一套实现了Collection接口的标准集合类。其中一些是具体类,这些类可以直接拿来使用,而另外一些是抽象类,提供了接口的实现部分。

集合算法

集合框架定义了集中算法,可用于集合和映射。这些算法被定义为集合类的静态方法。

如何使用迭代器

通常情况下,你会希望遍历一个集合中的元素。
一般遍历数组都是采用for循环或者增强for循环,这两种方法可以用在集合框架中。
但还有一种方法是采用迭代器遍历集合框架,它是一个对象,实现了Iterator接口或者ListIterator接口。

遍历ArrayList
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main {
  public static void main(String[] args) {
      List<String> list = new ArrayList<String>();
      list.add("Hello");
      list.add("World");
      list.add("Jack");

    //第一种遍历,使用for each遍历List
    for(String str : list){
        System.out.println(str);
    }

    //第二种遍历,把链表变为数组相关的内容进行遍历
    String[] strArray = new String[list.size()];
    list.toArray(strArray);
    for(int i = 0; i < strArray.length; i++){
        System.out.println(strArray[i]);
    }

    //第三种遍历,使用迭代器进行相关遍历
    Iterator<String> ite = list.iterator();
    while(ite.hasNext()){
        System.out.println(ite.next());
    }
}
}
遍历Map
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<String, String>();
        map.put("1", "string1");
        map.put("2", "string2");
        map.put("3", "string3");

    //通过Map.KeySet遍历key和value
    for(String key : map.keySet()){
        System.out.println("key: " + key + " and value= " + map.get(key));
    }

    //通过Map.entrySet使用iterator遍历key和value
    Iterator<Map.Entry<String, String>> ite = map.entrySet().iterator();
    while(ite.hasNext()){
        Map.Entry<String, String> entry = ite.next();
        System.out.println("key= " + entry.getKey() + " + and value= " + entry.getValue());
    }
    
    //第三种,通过Map.entrySet遍历key和value
    for(Map.Entry<String, String> entry : map.entrySet()){
        System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
    }

    //第四种,通过Map.values()遍历所有的value,但不能遍历key
    for(String v : map.values()){
        System.out.println("value= " + v);
    }
  }
}

ArrayList和LinkedList的区别
ArrayList是List接口的一种实现,它是用数组来实现的;
LinkedList是List接口的一种实现,它是用链表来实现的。

相关文章

网友评论

      本文标题:Java 集合框架

      本文链接:https://www.haomeiwen.com/subject/qhxroftx.html