`
h416756139
  • 浏览: 359606 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 集合

    博客分类:
  • java
阅读更多

这里说的集合指的是小写的collection,集合有4种基本形式,其中前三种的父接口是Collection。

List 关注事物的索引列表

Set 关注事物的唯一性

Queue 关注事物被处理时的顺序

Map 关注事物的映射和键值的唯一性

一、Collection 接口

Collection接口是 Set 、List 和 Queue 接口的父接口,提供了多数集合常用的方法声明,包括 add()、remove()、contains() 、size() 、iterator() 等。

add(E e) 将指定对象添加到集合中

remove(Object o) 将指定的对象从集合中移除,移除成功返回true,不成功返回false

contains(Object o) 查看该集合中是否包含指定的对象,包含返回true,不包含返回flase

size() 返回集合中存放的对象的个数。返回值为int

clear() 移除该集合中的所有对象,清空该集合。

iterator() 返回一个包含所有对象的iterator对象,用来循环遍历

toArray() 返回一个包含所有对象的数组,类型是Object

toArray(T[] t) 返回一个包含所有对象的指定类型的数组

二、几个比较重要的接口和类简介

1、List接口

List 关心的是索引,与其他集合相比,List特有的就是和索引相关的一些方法:get(int index) 、 add(int index,Object o) 、 indexOf(Object o) 。

ArrayList 可以将它理解成一个可增长的数组,它提供快速迭代和快速随机访问的能力。

LinkedList 中的元素之间是双链接的,当需要快速插入和删除时LinkedList成为List中的不二选择。

Vector 是ArrayList的线程安全版本,性能比ArrayList要低,现在已经很少使用

2、Set接口

Set关心唯一性,它不允许重复。

HashSet 当不希望集合中有重复值,并且不关心元素之间的顺序时可以使用此类。

LinkedHashset 当不希望集合中有重复值,并且希望按照元素的插入顺序进行迭代遍历时可采用此类。

TreeSet 当不希望集合中有重复值,并且希望按照元素的自然顺序进行排序时可以采用此类。(自然顺序意思是某种和插入顺序无关,而是和元素本身的内容和特质有关的排序方式,譬如“abc”排在“abd”前面。)

3、Queue接口

Queue用于保存将要执行的任务列表。

LinkedList 同样实现了Queue接口,可以实现先进先出的队列。

PriorityQueue 用来创建自然排序的优先级队列。

4、Map接口

Map关心的是唯一的标识符。他将唯一的键映射到某个元素。当然键和值都是对象。

HashMap 当需要键值对表示,又不关心顺序时可采用HashMap。

Hashtable 注意Hashtable中的t是小写的,它是HashMap的线程安全版本,现在已经很少使用。

LinkedHashMap 当需要键值对,并且关心插入顺序时可采用它。

TreeMap 当需要键值对,并关心元素的自然排序时可采用它。

三、ArrayList的使用

ArrayList是一个可变长的数组实现,读取效率很高,是最常用的集合类型。

1、ArrayList的创建

在Java5版本之前我们使用:

List list = new ArrayList();

在Java5版本之后,我们使用带泛型的写法:

List<String> list = new ArrayList<String>();

上面的代码定义了一个只允许保存字符串的列表,尖括号括住的类型就是参数类型,也成泛型。带泛型的写法给了我们一个类型安全的集合。关于泛型的知识可以参见这里。

2、ArrayList的使用:

List<String> list = new ArrayList<String>();

list.add("nihao!");

list.add("hi!");

list.add("konikiwa!");

list.add("hola");

list.add("Bonjour");

System.out.println(list.size());

System.out.println(list.contains(21));

System.out.println(list.remove("hi!"));

System.out.println(list.size());

关于List接口中的方法和ArrayList中的方法,大家可以看看JDK中的帮助。

3、基本数据类型的的自动装箱:

我们知道集合中存放的是对象,而不能是基本数据类型,在Java5之后可以使用自动装箱功能,更方便的导入基本数据类型。

List<Integer> list = new ArrayList<Integer>();

list.add(new Integer(42));

list.add(43);

4、ArrayList的排序:

ArrayList本身不具备排序能力,但是我们可以使用Collections类的sort方法使其排序。我们看一个例子:

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

public class Test {

    public static void main(String[] args) {

        List<String> list = new ArrayList<String>();

        list.add("nihao!");

        list.add("hi!");

        list.add("konikiwa!");

        list.add("hola");

        list.add("Bonjour");

        System.out.println("排序前:"+ list);

        Collections.sort(list);

        System.out.println("排序后:"+ list);

    }

}

编译并运行程序查看结果:

排序前:[nihao!, hi!, konikiwa!, hola, Bonjour]

排序后:[Bonjour, hi!, hola, konikiwa!, nihao!]

5、数组和List之间的转换

从数组转换成list,可以使用Arrays类的asList()方法:

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

public class Test {

    public static void main(String[] args) {

            String[] sa = {"one","two","three","four"};

            List list = Arrays.asList(sa);

            System.out.println("list:"+list);

            System.out.println("list.size()="+list.size());

    }

}

6、Iterator和for-each

在for-each出现之前,我们想遍历ArrayList中的每个元素我们会使用Iterator接口:

import java.util.Arrays;

import java.util.Iterator;

import java.util.List;

public class Test {

    public static void main(String[] args) {

        // Arrays类为我们提供了一种list的便捷创建方式

        List<String> list = Arrays.asList("one", "two", "three", "four");

        // 转换成Iterator实例

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

        //遍历

        while (it.hasNext()) {

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

        }

    }

}

在for-each出现之后,遍历变得简单一些:

import java.util.Arrays;

import java.util.Iterator;

import java.util.List;

public class Test {

    public static void main(String[] args) {

        // Arrays类为我们提供了一种list的便捷创建方式

        List<String> list = Arrays.asList("one", "two", "three", "four");

        for (String s : list) {

            System.out.println(s);

        }

   }}

 

分享到:
评论

相关推荐

    java集合思维导图

    java集合 java集合思维导图 java集合总结

    【Java】Java集合框架思维导图。

    xmind格式的Java集合框架学习导图,包括Collection接口/Map接口以及具体实现类。 同样包含大厂面试题,也在导图中有所体现。 能学到什么: 更加成体系的知识框架,更加全面的、系统的知识。 思维导图: 思维导图具有...

    java 集合练习题

    键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台java 集合练习题

    java集合习题及答案

    java集合基础习题及答案,

    Java集合整体讲解

    Java集合整体讲解,其中包含了Collection,Map,Iterator和一些工具类,以及集合整体大框架

    java集合知识大全

    java 集合 List arrayList vector map set

    Java集合排序及java集合类详解.pdf

    Java 集合排序 及java集合类 详解.pdf

    Java基础篇:Java集合.pdf

    该文档主要详细总结了Java集合的相关知识,包括Collection和Map接口、Collection接口的子接口List和Set接口以及具体的实现类、存储原理等;Map接口的子接口HashMap、LinkedHashMap、TreeMap、Properties等

    Java 集合排序及java 集合类详解

    Java 集合排序及java 集合类详解,Java里面最重要、最常用也就是集合那部分了,能够用好集合和理解好集合对于做Java程序的开发拥有无比的好处。本教程详细解释了关于Java中的集合是如何实现的, 以及他们的实现原理...

    Java集合框架总结

    Java集合框架总结Java集合框架总结Java集合框架总结Java集合框架总结Java集合框架总结Java集合框架总结

    java集合框架面试题

    内含大量java集合框架方面常被面试官问到的经典面试题。

    Java集合排序及java集合类详解

    Java集合排序及java集合类详解,对list,set,map等java集合进行详细讲解

    Java集合框架.ppt

    集合是将多个元素组成一个单元的...Java集合框架,为我们提供了一套性能优良、使用方便的接口和类,我们不必再重新发明轮子,只需学会如何使用它们,就可以处理实际应用中出现的问题了Java集合框架位于java.util包中

    java集合资料整理

    关于java集合资料的整理 集合接口:6个接口,表示不同集合类型,是集合框架的基础。 抽象类:5个抽象类,对集合接口的部分实现。可扩展为自定义集合类。 实现类:8个实现类,对接口的具体实现。 在很大程度上,...

    Java集合框架详解

    Java集合框架详解Java集合框架详解Java集合框架详解

    java集合框架图

    java集合框架图java集合框架图java集合框架图java集合框架图java集合框架图

    Java集合详解,详细讲解java的集合类

    Java集合详解,详细讲解java的集合类,对java集合类的最详细的讲解。我自己的总结,保证大家看了很有收获

    java集合java集合java集合java集合java集合

    java集合

    java 集合分组与排序

    java 集合分组排序帮助类有好的意见可以互相交流不甚感激

Global site tag (gtag.js) - Google Analytics