Java复习笔记(五)----Java集合类

目录

 

1.Java集合类简介

2.List接口

3.Set接口

4.Iterator接口

5.Map接口


1.Java集合类简介

    Java集合可用于存储数量不等的对象,并可以实现常用的数据结构(如栈、队列等待),还可以用于保存具有映射关系的关联数组。Java集合就是一种容器,可以把多个对象放进容器中,Java集合可以记住容器中的对象的数据类型,从而可以使代码更加简洁和健壮。

    Java集合大致可以分为Set、List、Queue、Map四种体系

    Set:代表无序、不可重复

    List:代表有序、重复的集合

    Queue:代表一种队列集合实现

    Map:代表具有映射关系的集合

    Java集合与数组的区别:

     数组的长度是不可变化的,在数组初始化时指定了数组长度,如果需求要动态添加数据,此时数据就无可为力了,而集合可以保存不确定数量的数据,同时也可以保存具有映射关系的数据。 同一个数组的元素即可是基本类型的值,也可以是对象(实际上保存的是对象的引用变量);而集合只能保存同一类型的对象。

   Java集合体系之间的继承关系:

    Java集合主要有两个接口派生而出:Collection和Map,这个两个接口是Java集合框架的根接口。

其中Collection的子类分别为Set , Queue , List , 而这三个子类也都是接口,必须要由其子类实现。


Map实现类是用于保存具有映射关系的数据。Map保存的每项数据都是键值对(key-value),Map中的key是不可重复的,key用于标识集合里的每项数据。

其中HashMap、TreeMap是经常用到的实现类


2.List接口

    List接口可以存放任意的数据,而且在List接口中内容是可以重复的

    List接口常用子类:

  •         ArrayList
  •         Vector

    ArratList与Vector的常用操作:

    add操作

    

    get操作

    

    indexOf操作

    

    isEmpty操作

    

ArrayList实际代码演示如下:

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

public class ListDemo01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		List<String> K = new ArrayList<String>();
		K.add("A");
		K.add("B");
		K.add("A");//List中的内容可以重复
		for (int i = 0; i < K.size(); i++) {
			System.out.println(K.get(i));
		}
		K.remove(0);//删除第一项
		System.out.println("---------");
		for (int i = 0; i < K.size(); i++) {
			System.out.println(K.get(i));
		}
		System.out.println("集合是否为空:"+K.isEmpty());
		//返回该对象在List中的下标
		System.out.println("\"B\"是否存在:"+K.indexOf("B"));
	}

}

运行结果为:

 

Vector实际代码演示如下:

import java.util.List;
import java.util.Vector;

public class ListDemo02 {

	public static void main(String[] args) {
		List<String> lists = new Vector<String>();
		lists.add("A");
		lists.add("B");
		for (int i = 0; i < lists.size(); i++) {
			System.out.println(lists.get(i));
		}
	}
}

运行结果为:

ArrayList与Vector的区别:

 ArrayListVector
推出时间JDK1.2之后推出JDK1.0推出
性能采用异步处理方式,性能高采用同步处理方式,性能低
线程安全属于非线程安全属于线程安全

 


3.Set接口

Set接口中不能加入重复元素,但是可以通过子类进行排序

Set接口常用子类:

  • HashSet  ----  散列存放
  • TreeSet   ----  有序存放​​​​​​​

HashSet与TreeSet的区别:

1、TreeSet 是二叉树实现的,Treeset中的数据是自动排好序的,不允许放入null值。 

2、HashSet 是哈希表实现的,HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束。 

 

        HashSet实际代码演示:

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

public class ListDemo03 {

	public static void main(String[] args) {
		Set<String> set = new HashSet<String>();
		set.add("E");
		set.add("B");
		set.add("A");
		set.add("F");
		set.add("D");
		set.add("C");
		System.out.println(set);
	}
}

​​​​​​​运行结果为:


TreeSet实际代码演示:

import java.util.Set;
import java.util.TreeSet;

public class ListDemo04 {

	public static void main(String[] args) {
		Set<String> set = new TreeSet<String>();
		set.add("C");
		set.add("E");
		set.add("A");
		set.add("G");
		set.add("F");
		set.add("D");
		set.add("B");
		System.out.println(set);
	}
}

        运行结果为:


4.Iterator接口

  1. 集合输出的标准做法: 使用Iterator接口
  2. 操作原理:

            Iterator是专门的迭代器输出接口,迭代输出就是将元素一个个进行判断,判断其是否有内容,如果有内容则把内容取出,并进行下一轮判断;如果没有内容,则中断。

实际代码演示:

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

public class ListDemo05 {

	public static void main(String[] args) {
		List<String> lists = new ArrayList<String>();
		lists.add("F");
		lists.add("D");
		lists.add("B");
		lists.add("G");
		Iterator<String> iter = lists.iterator();
		while (iter.hasNext()) {
			System.out.println(iter.next());
		}
	}

}

运行结果为:


5.Map接口

    Map集合中存储的是键值对,键不能重复,值可以重复。根据键得到值,对map集合遍历时先得到键的set集合,对set集合进行遍历,得到相应的值。

    常用子类:

  • HashMap  :  无序存放,Key不允许重复
  • Hashtable :  无序存放,Key不允许重复

​​​​​​​HashMap常用操作:

get操作

isEmpty操作

containsKey操作

 

 HashMap实际代码演示:

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

public class MapDemo02 {

	public static void main(String[] args) {
		Map<String, String> map = new HashMap<String, String>();
		map.put("key1", "12");
		map.put("key2", "34");
		map.put("key3", "56");
		map.put("key4", "78");
		map.put("key5", "90");
		String str = map.get("key3");
		System.out.println(str);
		if (map.containsKey("key4")) {
			System.out.println("Key4存在");
		}else {
			System.out.println("Key4不存在");
		}
		if (map.containsKey("key8")) {
			System.out.println("Key8存在");
		}else {
			System.out.println("Key8不存在");
		}
	}

}

运行结果为:

 

HashMap的遍历操作:

keySet操作

values操作

 

实际代码演示:

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

public class MapDemo03 {

	public static void main(String[] args) {
		Map<String, String> map = new HashMap<String, String>();
		map.put("key1", "12");
		map.put("key2", "34");
		map.put("key3", "56");
		map.put("key4", "78");
		map.put("key5", "90");
		Set<String> s = map.keySet();//map.keySet()返回值是Set类型
		Iterator<String> iterator = s.iterator();
		while (iterator.hasNext()) {
			System.out.println(iterator.next());
		}
		System.out.println("----------------");
		Collection<String> collection = map.values();//map.values()返回值是collection类型
		Iterator<String> iterator2 = collection.iterator();
		while (iterator2.hasNext()) {
			System.out.println(iterator2.next());
		}
	}

}

运行结果为:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值