java——集合

  • 集合的基本概念

集合类主要负责保存,盛装其他数据

类集合也被称为容器类

Java所有的集合都位于java.util包下

提供统一的架构,集合接口,以及操作算法

  • 集合和数组的区别

数组的长度是固定的,而集合的长度是可变的

数组只能储存同种数据类型的数据(包括基本数据类型和对象引用类型)

集合可以储存不同数据类型的对象的引用(但不能储存基本数据类型)

保存一个编译时无法确定具体的数量,动态增长的数据,就应该选择java的集合类进行设计

  • 集合的分类

集合主要从Collection和Map两个接口

Iterator:迭代器,是java集合的顶层接口

Collection又分别被List和Set继承

List分为3个子类,ArrayList,LinkList和VectorList

Set分为2个子类,HashSet和TreeSet

Map分为2个子类,HashMap和TreeMap

  • Iterator(迭代器)

除了Map集合系列,都能通过迭代器来对集合中的元素进行遍历

Iterator存在于java.util包中

不论Collection的实际类型如何,他都支持一个Iterator()方法

  • Iterator常用方法

Iterator it = collection.iterator();//获得一个迭代器
while(it.hasNext()){
    Object obj = it.next();//得到一下个元素
}

常用的集合类

  • ArrayList

ArrayList是java中的有序链表类,实现了动态数组,即长度可变

他允许所有元素,包括null

每个ArrayList实例的容量可随着不断添加新元素而自动增加

  • ArrayList常用方法

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;

public class Main {

	public static void main(String[] args) {
		ArrayList<String> list = new ArrayList<String>();//创建ArrayList列表
		list.add("Tom");//往列表添加数据
		list.add("Jack");
		list.add("Joe");
		list.add(2,"Rose");//往指定位置添加2表示数组的下标位置,下标位置从0开始算
		System.out.println("此ArrayList包含的数据:"+list);
		
		int pos=list.indexOf("Rose");//查询下标的位置
		System.out.println("Rose的位置是:" + pos);
		
		boolean check = list.isEmpty();//判断列表中是否有值,有值为false,没有值为true
		System.out.println("判定此ArrayList是否为空:" + check);
		
		int size = list.size();//查看ArrayList列表的长度
		System.out.println("此ArrayList的长度是:" + size);
		
		boolean elememt = list.contains("George");//判断列表中是否包含某个值
		System.out.println("判定此ArrayList是否包含George"+elememt);
		
		String item = list.get(0);//获取指定位置的值
		System.out.println("0的位置的元素是:"+ item);
		
		//使用普通for循环方式遍历集合
		System.out.println("用普通for循环方式遍历集合");
		for (int i = 0; i < list.size(); i++) {
			System.out.println("索引位置:"+i+"的元素:" + list.get(i));
		}
		
		//使用foreach循环方式遍历集合
		System.out.println("用普通for循环方式遍历集合");
		for (String str : list) {
			System.out.println("元素是:"+str);
		}
		
		//使用迭代器(Iterator)方式遍历集合
		System.out.println("用迭代器(Iterator)循环方式遍历集合");
		for (Iterator iterator = list.iterator(); iterator.hasNext();) {
			System.out.println("元素是:"+ iterator.next());
		}
		
		list.set(1, "May");//替代(1也是下标)
		System.out.println("替换后的列表是:"+list);
		
		list.remove(0);//移除第一个元素
		list.remove("Rose");//移除列表中“Rose”元素
		System.out.println("最终该列表是:"+list);
		
		//把集合列表转换成数组元素
		String[] simpleArray =list.toArray(new String[list.size()]);//new String[list.size()设置数组的大小
		System.out.println("该集合列表转换成数组元素后:"+Arrays.toString(simpleArray));
	}
}

  • HashSet

HashSet是一个无序,无重复元素且允许null元素但最多只能有一个null元素的集合

没有索引,凡是需要通过索引来进行操作的方法HashSet都没有

不能使用普通for循环来遍历,只有foreach和迭代器(Iterator)两种遍历方法

HashSet不具备储存顺序性,HashSet遍历出的元素也并非按照插入的顺序

  • HashSet常用方法

import java.util.HashSet;
import java.util.Iterator;


public class Main {

	public static void main(String[] args) {
		HashSet<String> setString = new HashSet<String>();//创建HashSet
		setString.add("星期一");
		setString.add("星期二");
		setString.add("星期三");//添加
		setString.add("星期四");
		setString.add("星期五");
        setString.add("星期五");
		setString.add(null);
		Iterator it = setString.iterator();//使用迭代器遍历输出
		while (it.hasNext()) {
			System.out.println(it.next());
			
		}
	}
}

  • HashMap

HashMap是用于储存Key-Value键值对的集合,他允许用一个"key"去储存数据(通过key得到数据)

HashMap是具有Key-Value键值这样“双数据”类型

常把HashMap的取值比喻成查字典的操作

  • HashSet常用方法

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class Main {

	public static void main(String[] args) {
		HashMap<String,String> hMap = new HashMap<String,String>();//创建HashMap
			hMap.put("1", "星期一");
			hMap.put("2", "星期二");//往里面添加值
			hMap.put("3", "星期三");
		
			Collection c1 = hMap.values();//把集合里的值转换成Collection
			Iterator it = c1.iterator();//使用迭代器遍历值
			while (it.hasNext()) {
				System.out.println(it.next());//输出值
				
			}
			
			Set c2 = hMap.keySet();//遍历key值
			it = c2.iterator();
			while (it.hasNext()) {
				System.out.println(it.next());//输出键的值
				
			}
	}
}

想获取出HashMap中的值数据,要通过        hMap.values()方法

将hMap中的值全取出转成一个“单数据类型”的普通集合类型,最后对此集合类型进行遍历

  • 总结

ArrayList:如果需要大量的随机访问就要使用ArrayList

HashSet:元素无放入顺序,元素不可重复,重复元素会覆盖掉

HashMap:如果要通过键值对访问就是用HashMap,键唯一,值不唯一,key和value都可以为null

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值