Java中的集合类

Java中的集合类

在这里插入图片描述

Collection接口

  • 一组称为元素的对象
  • 一个Collection中可以放不同类型的数据
  • 是Set接口和List接口的父类
  • 是否有特定的顺序以及是否允许重复,取决于它的实现
        Set - 无序的集合;不允许重复
            –HashSet
            –TreeSet
        List - 有序的集合;允许重复
            – ArrayList
            – LinkedList

Collection接口的常用方法

boolean add(Object)

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

//实例化一个集合类型的数组列表
Collection list = new ArrayList();
//忘记和里面添加一个对象
list.add("添加一个对象");
boolean addAll(Collection)

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

//往集合里面添加N个对象
Collections.addAll(list, "farewef",222,true,"中文",2.3333);
int size()

集合内容纳的元素数量

 //集合的元素个数
 System.out.println(list.size());
boolean isEmpty()

集合是否为空

 System.out.println(list.isEmpty());  //为空返回true,不为空返回false
boolean contains(Object)

集合内是否含有参数对象

//判断集合中是否含有222这个对象,有返回true,没有放回false
System.out.println(list.contains(222));
Iterator iterator()

产生一个迭代器。任何类型的Collection,都支持一个iterator()的方法,该方法返回一个迭代器,使用该迭代
器即可逐一访问Collection中每一个元素。

//实例化一个集合类型的数组列表
Collection list = new ArrayList();

Iterator it = list.iterator();
 while(it.hasNext()) {
		Object i = it.next();
		 System.out.println(i);  //在控制台逐一输出集合中的对象,相当for与遍历数组
	 }
Object[] toArray()

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

Object o = new Object();
 o = list.toArray();
boolean remove(Object)

从集合中删除对象

list.remove(222); //成功返回true,不成功返回false
boolean removeAll(Collection)

清空指定集合

boolean containsAll(Collection)

判断集合内是否包含子集

Collection list = new ArrayList();		
Collection list2 = new ArrayList();
//往集合里面添加N个对象
Collections.addAll(list, list2,"farewef",222,true,"中文",2.3333);
System.out.println(list.contains(list2));  //true 存在返回true,不存在返回falses
boolean retainAll(Collection)

仅保留此 collection 中那些也包含在指定 collection 的元素

void clear() 清空集合

Set接口

  • Collection的子接口
  • 用来包含一组 无序无重复 的对象
        无序 — 是指元素存入顺序和集合内存储的顺序不同;
        无重复 — 两个对象e1和e2,如果e1.equals(e2)返回true,则认为e1和e2重复,在set中只保留一个。
  • Set接口的实现类
        HashSet — HashSet的特性在于其内部对象的散列存取,即采用哈希技术
        TreeSet — TreeSet存入的顺序跟存储的顺序不同,但是存储是按照排序存储的

List接口

  • Collection的子接口
  • 用来包含一组 有序有重复 的对象
  • List中的元素都对应一个整数型的序号,记载其在容器中的位置,可以根据序号存取容器中的元素
  • List有两种主要的集合实现类:
        ArrayList
        LinkedList

两个实现类的区别:

  • ArrayList
        ArrayList是线性顺序存储的,是一种线性表
        它的特性和数组很接近,数组大小是不变的,而ArrayList的大小是可以动态改变的
  • LinkedList
        是数据结构中链表的java实现
        相对于List来说,LinkedList最主要的功能方面的增强是可以在List的头部和尾部添加、删除、取得元素,直接提供了这些方法的实现。所以它可以非常方便的实现我们数据结构中的常见的Stack(栈)、queue(队列)等

Map接口

  • Map内存储的是键/值对这样以成对的对象组(可以把一组对象当成一个元素),通过“键”对象来查询“值”对象
  • Map是不同于Collection的另外一种集合接口
  • Map中,key值是唯一的(不能重复),而key对象是与value对象关联在一起的
  • 两个实现类
        HashMap
        TreeMap

HashMap与TreeMap的比较

  • HashMap基于哈希表实现。
  • TreeMap基于树实现。
  • HashMap可以通过调优初始容量和负载因子,优化HashMap空间的使用。
  • TreeMap没有调优选项,因为该树总处于平衡状态
    -HashMap性能优于TreeMap。

HashMap与Hashtable的比较:

  • Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。
  • Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的。
  • HashMap允许将null作为一个entry的key或者value,而Hashtable不允许用null。

常用方法:

方法含义
Object put(Object key,Object value)将指定的值与此映射中的指定键相关联
void putAll(Map t)将映射t中所有映射关系复制到此映射中
Object get(Object key)返回此映射中映射到指定键的值
Object remove(Object key)若存在此键的映射关系,将其从映射中移除
boolean containsKey(Object key)若此映射包含指定键的映射关系,返回 true
boolean containsValue(Object value)若此映射为指定值映射一个或多个键,返回true
int size()返回此映射中的键-值映射对数
void clear()从此映射中移除所有映射关系
boolean isEmpty()若此映射未包含键-值映射关系,返回 true
Set keySet()返回此映射中包含的键的 set 视图

下面是set集合、list集合和map集合的demo

set集合Demo

package com.neuedu.chapter02._集合;

import java.util.HashSet;
import java.util.TreeSet;

public class SetDemo {
	public static void main(String[] args) {
		//构造一个新的set集合
		HashSet hset = new HashSet();
		//添加元素
		hset.add(null);
		hset.add(true);
		hset.add("只能问");
		hset.add("hhiuhhh");
		hset.add(41243);  //自动装箱为Integer
		hset.add('q');
		
		//使用foreach方式遍历set集合
		for (Object i : hset) {
			System.out.println(i);
		}
		System.out.println(hset);
		
		//实例化一个TreeSet的集合对象
		TreeSet tset = new TreeSet();
		tset.add("hello");
		tset.add("hello");
		tset.add("q");
		tset.add("w");
		tset.add("e");
		tset.add("r");
		tset.add("t");
		tset.add("y");
		
		System.out.println(tset);
		//因为存储的顺序是有序的,所以可以用for循环去遍历它
		for (Object i : tset) {
			System.out.print(i+"  ");
		}
	}
}

List集合Demo

package com.neuedu.chapter02._集合;
import java.util.ArrayList;
import java.util.LinkedList;
public class ListDemo {
	public static void main(String[] args) {
		//创建对象
		ArrayList alist = new ArrayList();
		alist.add(null);
		alist.add(true);
		alist.add("只能问");
		alist.add("hhiuhhh");
		alist.add(41243);  //自动装箱为Integer
		alist.add('q');
		alist.add('q');
		alist.add('q');
		System.out.println(alist);
		//在列表中的index位置,添加element元 素
		alist.add(1,"BB");
		//返回列表中指定位置的元素
		System.out.println(alist.get(1));
		//在list中查询元素的索引值,如不存在,返回-1。
		System.out.println(alist.indexOf("只能问"));  //查找“只能问”这个元素在集合索引值
		
		System.out.println(alist);
		for (Object i : alist) {
			System.out.println(i);
		}
		
		LinkedList llist = new LinkedList();
		llist.add(null);
		llist.add(true);
		llist.add("只能问");
		llist.add("hhiuhhh");
		llist.add(41243);  //自动装箱为Integer
		llist.add('q');
		llist.add('q');
		llist.add('q');
		System.out.println(llist);
		
		
		llist.addFirst("哈哈哈");
		System.out.println(llist);
		System.out.println(llist.getFirst());
		llist.addLast("哈哈哈");
		System.out.println(llist);
		
		for (Object i : llist) {
			System.out.print(i+"  ");
		}
	}
}

map集合Demo

package com.neuedu.chapter02._集合;

import java.util.HashMap;
import java.util.TreeMap;

public class MapDemo {
	public static void main(String[] args) {
		HashMap hmap = new HashMap();
		hmap.put(null,null);
		hmap.put(null,null);
		hmap.put("aaa","bbb");
		hmap.put("ccc","ddd");
		hmap.put("小莫",666);
		hmap.put("羽毛球","林丹");
		hmap.put("国家运动员","林丹");
		System.out.println(hmap);
		
		//复制map
		HashMap	map2 = new HashMap();
		map2.putAll(hmap);
		System.out.println(map2);
		
		//获取键为“羽毛球”的值
		System.out.println(hmap.get("羽毛球"));
		
		//获取map中的键-值对的数量
		System.out.println(hmap.size()); 
		
		//判断值为 林丹 键是否存在
		System.out.println(hmap.containsValue("林丹"));
		
		//判断是否存在未包含键-值映射关系,有返回true,没有false
		System.out.println(hmap.isEmpty());
		
		//返回此映射中包含的键的 set 视图
		System.out.println(hmap.keySet());
	}
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

code_mo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值