Java容器类

Posted blog-lnw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java容器类相关的知识,希望对你有一定的参考价值。

容器类:是Java以类库的形式供用户开发程序时可直接使用的各种数据结构。

容器接口有两种:List列表接口           Set集合接口

一、列表接口List

性质:List是Collection子接口,它是一种包含有序元素的线性表,其中的元素必须有顺序存放,且可重复,可为null

List有两种:链表类LinkedList和数组列表类ArrayList

创建两种表的对象(需先引入java.util.* 包)

1 LinkedList<?> ld=new LinkedList<?>();    //链表
2 ArrayList<?> al=new ArrayList<?>();        //数组列表

 

二、集合接口Set

Set性质:不含重复的元素,也是继承自Collection接口。Set集合中的对象不按特定的方式排序,只是简单的将对象加入到集合中。集合中的元素的顺序与元素加入集合的顺序无关。

实现Set接口有两个主要类:HashSet哈希集合            TreeSet集合

HashSet:根据哈希码来存取集合中的元素。哈希集合是在元素的存储位置和元素的k值之间建立一个特定的对应关系f,使每一个元素与唯一一个的存储位置相对应。(可以简单的想象成函数y=f(k))

TreeSet:TreeSet与HashSet很相似,但TreeSet集合里的元素总是处于有序的状态。

简单的使用Set

 1 import java.util.*;
 2 public class TreeSetClass {
 3     public static void main(String[] args) {
 4         Set<String> hs=new HashSet<String>();    //创建哈希集合对象hs
 5         hs.add("唐 僧");
 6         hs.add("孙悟空");
 7         hs.add("猪八戒");
 8         hs.add("沙和尚");
 9         hs.add("白龙马");
        //以HashSet对象为参数,以hs对象里的元素创建TreeSet对象
10 TreeSet<String> ts=new TreeSet<String>(hs); //创建树集合 11 System.out.println("树集合:"+ts); //输出树集合 12 System.out.println("树集合的第一个元素:"+ts.first()); 13 System.out.println("树集合的最后一个元素:"+ts.last()); 14 System.out.println("headSet(孙悟空)的元素:"+ts.headSet("孙悟空")); 15 System.out.println("tailSet(孙悟空)的元素"+ts.tailSet("孙悟空")); 16 System.out.println("ceilSet(沙)的元素:"+ts.ceiling("沙")); 17 } 18 }

三、迭代器

迭代器Iterator:类似于遍历,对容器中的元素进行访问且只访问一次。

Iterator有三个方法:

hasNext():判断是否含有后续元素,有则返回true

next():返回后续元素

remove():删除迭代器当前指向的元素

Iterator有一个子类接口ListIteraotr,ListIterator只能用于List及其子类。

创建一个迭代器:

1 import java.util.*;
2 ArrayList<Integer> al=new ArrayList<Integer>();//创建数组列表
3 Iterator<Integer> iterator=al.iterator();     //返回al的迭代器

四、映射接口Map

Map是另一种存储数据结构的对象。

Map性质:Map中的元素是成对出现的,它提供了键(key)到值(value)的映射。(Map没有继承Collection)接口

Map有两种:HashMap    和    TreeMap

和集合一样,HashSet是无序的,TreeMap是有序的

Map的一般方法:

put(K key,V value)

putAll(Map<? extends k,? extends V)m)  把m的所有元素添加到Map对象中

get(K key)    //返回k所映射的值,没有就返回null

Set<k> keySet()    //返回该集合中所有键对象形成的Set集合

V remove(Object key)    //将键key的条目移除



以上是关于Java容器类的主要内容,如果未能解决你的问题,请参考以下文章

java 代码片段

java代码在片段活动中不起作用

Java容器类总结

java 容器类总结

[Java 并发编程实战] 同步容器类潜在的问题(含实例代码)

[Java 并发编程实战] 同步容器类潜在的问题(含实例代码)