【Java】对象容器——集合

Java集合类型分为Collection和Map。所有的Java集合都在java.util包中

学习Java中的集合,首先从接口入手,重点掌握List,Set,Map三个接口。

1.List集合

 

 

List集合中的元素是有序的,可以重复出现。

List接口的实现类有ArrayList和LinkedList。ArrayList是基于动态数组数据结构的实现,LinkedList是基于链表数据结构的实现。

 

常用方法:

import java.util.ArrayList;
import java.util.List;

public class List_method{

	public static void main(String[] args) {
		List list=new ArrayList();
		String b="B";
		
		//向集合中添加元素
		list.add("A");
		list.add(b);
		list.add("C");
		list.add(b);
		list.add("D");
		
		//打印集合元素个数
		System.out.println("集合size="+list.size());
		
		//打印集合
		System.out.println(list);
		
		//从前往后查找集合中的"B"元素
		System.out.println("indexOf(\"B\")="+list.indexOf(b));
		
		//从后往前查找集合中的"B"元素
		System.out.println("indexOf(\"B\")="+list.lastIndexOf(b));
		
		//删除集合中的第一个"B"元素
		list.remove(b);
		System.out.println("删除第1个B后:"+list);
		
		//删除第4个元素
		list.remove(3);
		System.out.println("删除第4个元素后:"+list);
		
		//判断集合是否为空
		System.out.println("list集合是空的:"+list.isEmpty());
		
		//替换集合第二个元素
		System.out.println("替换前:"+list);
		list.set(1, "F");
		System.out.println("替换后:"+list);
		
		//清空集合
		list.clear();
		System.out.println(list);
		
		//重新添加元素
		list.add(1);	//发生自动装箱
		list.add(2);
		
		int item=(Integer)list.get(0);	//发生自动拆箱
	}

}

在Java中任何集合中存放的都是对象,即引用数据类型,基本数据类型不能放到集合中。但上述代码将整数放到集合中,是因为这个过程发生了自动装箱,整数1被封装成Integer对象1,然后再放到集合中。相反从集合中取出的是Integer对象,之所以能够赋值给int类型,是因为这个过程发生了自动拆箱。

遍历集合:

List遍历有三种方法:

(1)使用for循环遍历。

(2)使用增强for循环遍历。推荐使用这种遍历方法。

(3)使用迭代器遍历。

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class List_iter {

	public static void main(String[] args) {
		List list=new ArrayList();
		String b="B";
		
		//向集合中添加元素
		list.add("A");
		list.add(b);
		list.add("C");
		list.add(b);
		list.add("D");
		
		//1.使用for循环遍历
		for(int i=0;i<list.size();i++)
		{
			System.out.printf("读取集合元素(%d):%s\n",i,list.get(i));
			//println不允许这种形式写法
		}
		
		//2.使用增强for循环遍历
		for(Object item:list)
		{
			String s=(String)item;
			System.out.println("读取集合元素:"+s);
		}
		
		//3.使用迭代器遍历
		Iterator it=list.iterator();
		while(it.hasNext())
		{
			Object item=it.next();
			String s=(String)item;
			System.out.println("读取集合元素:"+s);
		}
	}

}

2.Set集合

Set集合是无序的,集合中元素不能重复出现。

Set接口直接实现类主要是HashSet,HashSet是基于散列表数据结构的实现。

常用方法:

import java.util.HashSet;
import java.util.Set;

public class Set_method {

	public static void main(String[] args) {
		Set set=new HashSet();
		String b="B";
		
		//向集合中添加元素
		set.add("A");
		set.add(b);
		set.add("C");
		set.add(b);		//不能重复添加元素,无效。
		set.add("D");
		set.add("E");
		
		//打印集合元素个数
		System.out.println("集合size="+set.size());
		
		//打印集合
		System.out.println(set);
		
		//删除集合中"B"元素
		set.remove(b);
		
		//判断集合中是否包含B元素
		System.out.println("是否包含\"B\":"+set.contains(b));
		
		//判断集合是否为空
		System.out.println("set集合是空的:"+set.isEmpty());
		
		//清空集合
		set.clear();
		System.out.println(set);
	}

}

遍历集合:

Set集合中的元素由于没有序号,所以不能使用for循环进行遍历,但可以使用增强for循环和迭代器进行遍历。事实上,这两种遍历方式都是继承自Collection集合,也就是说,所有的Collection集合类型都有这两种遍历方式。

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

public class Set_iter {

	public static void main(String[] args) {
		Set set=new HashSet();
		String b="B";
		
		//向集合中添加元素
		set.add("A");
		set.add(b);
		set.add("C");
		set.add(b);		//不能重复添加元素,无效。
		set.add("D");
		set.add("E");
		
		//1.使用增强for循环遍历
		for(Object item:set)
		{
			String s=(String)item;
			System.out.println("读取集合元素:"+s);
		}
		
		//2.使用迭代器遍历
		Iterator it=set.iterator();
		while(it.hasNext())
		{
			Object item=it.next();
			String s=(String)item;
			System.out.println("读取集合元素:"+s);
		}
	}

}

3.Map集合

Map集合是由两个集合构成的,一个是键(key)集合,一个是值(value)集合。键集合是Set类型,因此不能有重复的元素。而值集合是Collection类型,可以有重复的元素。Map集合中的键和值是成对出现的。

Map接口直接实现类主要是HashMap,HashMap是基于散列表数据结构的实现。

常用方法:

import java.util.HashMap;
import java.util.Map;

public class Map_method {

	public static void main(String[] args) {
		Map map=new HashMap();

		map.put(102, "张三");
		map.put(105, "李四");
		map.put(109, "王五");
		map.put(110, "董六");
		map.put(111, "李四");	//李四 值重复
		map.put(109, "刘备");	//109 键已经存在,替换原来王五
		
		//打印集合元素个数
		System.out.println("集合size="+map.size());
		
		//打印集合
		System.out.println(map);
		
		//通过键取值
		System.out.println("109-"+map.get(109));
		System.out.println("108-"+map.get(108));
		
		//删除键值对
		map.remove(109);
		
		//判断键集合中是否包含109
		System.out.println("键集合中是否包含109:"+map.containsKey(109));
		
		//判断值集合中是否包含李四
		System.out.println("值集合中是否包含李四:"+map.containsValue("李四"));
		
		//判断值集合是否为空
		System.out.println("集合是空的:"+map.isEmpty());
		
		//清空集合
		map.clear();
		System.out.println(map);
	}

}

遍历集合:

Map有两个集合,因此遍历时可以只遍历值的集合,也可以只遍历键的集合,还可以同时遍历。这些遍历过程都可以使用增强for循环和迭代器进行遍历。

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

public class Map_iter {

	public static void main(String[] args) {
		Map map=new HashMap();

		map.put(102, "张三");
		map.put(105, "李四");
		map.put(109, "王五");
		map.put(110, "董六");
		map.put(111, "李四");
		
		//1.使用增强for循环遍历
		//获得键集合
		Set keys=map.keySet();	//keySet()返回Map中的所有键集合,返回值是Set类型
		
		for(Object key:keys)
		{
			int ikey=(Integer)key;		//自动拆箱
			String value=(String)map.get(ikey);		//自动装箱
			System.out.printf("key=%d - value=%s \n",ikey,value);
		}
		
		//2.使用迭代器遍历
		//获得值集合
		Collection values=map.values();	//values()返回Map中的所有值集合,返回值是Collection类型
		
		//遍历值集合
		Iterator it=values.iterator();
		while(it.hasNext())
		{
			Object item=it.next();
			String s=(String)item;
			System.out.println("值集合元素:"+s);
		}
	}

}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值