Java之集合类

 Java当中拥有众多的集合类,尤其是ArrayList,以及HashMap在平时的开发中用的比较多,再次深深感谢Java给我们带来了这么多好用的工具类。

一.基础知识

Java集合类层次结构图

(图片盗用老师课件资源图)

其中Vector容器已经不太推荐使用了。通过该图可以看出主要是实现Collection接口以及Map接口。

二.具体用法

1.Collection接口常用方法

                             方法                                               含义

boolean add(Object)

集合中加入一个对象,成功时返回true

boolean addAll(Collection)

集合中加入另外一个集合对象

int size()

集合内容纳的元素数量

boolean isEmpty()

集合是否为空

boolean contains(Object)

集合内是否含有参数对象

Iterator iterator()

产生一个迭代器

Object[] toArray()

返回一个包含所有元素的对象数组

Object[] toArray(Object[])

把所有元素放入对象数组中

boolean remove(Object)

从集合中删除对象

boolean removeAll(Collection)

清空指定集合

boolean containsAll(Collection)

判断集合内是否包含子集

boolean retainAll(Collection)

删除子集合不包含的元素

void clear()

清空集合

Object[] toArray(Object[])

把所有元素放入对象数组中

2.List接口

用来包含有序有重复的对象这点跟Set接口刚好相反,下面使用例子来说明它们的使用方法

package com.itopic;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Main {

	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		//List接口test
		list.add("a");
		list.add("b");
		list.add("c");
		list.add("a");
		System.out.println("ArrayList:"+list);
		Set<String> set = new HashSet<String>();
		set.add("a");
		set.add("b");
		set.add("c");
		set.add("a");
		System.out.println("HashSet:"+set);
	}

}

输出结果是:

ArrayList: [a, b, c, a]
HashSet: [b, c, a]

可以看出实现List接口的具体实现类ArrayList存储的对象是有序且可重复的,而HashSet会依据加入顺序进行存储且不能有重复对象。

下面说一下ArrayList与LinkedList

ArrayList

它是线性表,跟数组有点类似,我们使用它的时候可以把它看做可变长数组,使用ArrayList可以帮助我们解决数组不可变长的不足。

LinkedList

其实就是Java实现的链表它跟ArrayList很大的不同就是它拥有一些方法,可以便于删除,修改,添加它的头部或尾部的对象,数据结构常用的队列,栈就可以通过LinkedList来实现,以下是它特有的一些方法:

void addFirst(Object o)

将给定元素插入此列表的开头

void addLast(Object o)

将给定元素追加到此列表的结尾

Object getFirst()

返回此列表的第一个元素

Object getLast()

返回此列表的最后一个元素

Object removeFirst()

移除并返回此列表的第一个元素

Object removeLast()

移除并返回此列表的最后一个元素

Demo:

package com.itopic;

import java.util.LinkedList;

public class Main {

	public static void main(String[] args) {
		LinkedList<String> list = new LinkedList<String>();
		//List接口test
		list.add("a");
		list.add("b");
		list.add("c");
		list.add("d");
		//插入头部
		list.addFirst("first");
		//插入尾部
		list.addLast("last");
		System.out.println(list);
	}

}
运行结果

[first, a, b, c, d, last]

操作性能

ArrayList适合随机查询的场合

LinkedList 元素的插入和删除操作性高
LinkedList功能更加强大。

未完待续........................

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值