J2SE堂上实例2.4Java中的Collection集合框架体系

本文深入解析Java中的Collection集合框架体系,包括List和Set的主要实现类,如ArrayList、LinkedList、HashSet和TreeSet的特点与应用场景,以及迭代器的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java中的Collection集合框架体系

Collection 老祖先,接口 interface

位于API中的java.util包中

工作中常用的两个子接口一定要知道:List 和 Set

List是有索引的,Set是无索引,有索引实际上相当于有顺序。

 List 子接口:ArrayList动态数组   LinkedList链接数组   Vector向量

ArrayList 和 LinkedList的区别?

数据存取方式不一样,称为不同的数据结构

ArrayList:基于数组实现的,挨个存放的优点是查找速度快,但对于增加和删除元素来说,挪位比较麻烦。

LinkedList:基于链表实现的,分开存放的优点是查找速度慢,但对于增加和删除元素来说,因为在物理上没存在一起,所以方便快捷。

Vector:向量:基于数组实现的,但是已经过时,现在都用ArrayList。

Set子接口:HashSet (无序)TreeSet(有序)

集合中存储的是对象的引用,真正的对象实际是存在堆(heap)里面的

迭代器(遍历器)

迭代器用于遍历集合中的元素

常见写法:

Iterator it = list.iterator();
while(it.hasNext()){

 //处理元素;
}

for(Iterator it=al.getIterator;it.hasNext();)

{ 

   //处理元素;

}

 

一.List的实现类ArrayList

测试类:

package javastudy;


import java.util.ArrayList;//当你编写时会自动导入所属的包名
import java.util.Iterator;

public class testit {

	public static void main(String[] args) {
        // TODO Auto-generated method stub


		ArrayList<String>al=new ArrayList<String>();
		al.add("广州");
		al.add("深圳");
		al.add("江门");
		al.add(0, "佛山");//在指定位置存放元素
		
		al.set(1, "中山");//修改指定位置的元素
		println1(al);
		System.out.println("******");
		println2(al);
		
		al.remove(0);//删除指定位置的元素
		System.out.println("******");
		println2(al);
	}
	//方法一打印数组元素内容
	static void println1(ArrayList<String>al) {
		for(int i=0;i<al.size();i++)
		{
                System.out.println(al.get(i));			
		}
	}
	//方法二打印数组元素内容
	static void println2(ArrayList<String>al) {
	       Iterator<String>it=al.iterator();//遍历器相当于一个指针
	       while(it.hasNext())
	       {
	    	   System.out.println(it.next());
	       } 
	}
	

}

输出结果:

补充:

Iterator是 迭代器类。
迭代这个名词对于熟悉Java/C++的人来说绝对不陌生。我们常常使用JDK提供的迭代接口进行java collection的遍历:
Iterator it = list.iterator();
while(it.hasNext()){
//using “it.next();”do some businesss logic
}
而这就是关于迭代器模式应用很好的例子。

来源:https://zhidao.baidu.com/question/2054173264077836747.html

 

二.Set的实现类

测试类:

package javastudy;

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

public class testit1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		HashSet<String> hs=new HashSet<String>();
		hs.add("北京");
		hs.add("南京");
		hs.add("东京");
		hs.add("西京");
		//第一种方法输出数组信息
		for(Iterator<String>it=hs.iterator();it.hasNext();)
		{
			System.out.println(it.next());
		}
		
		
		TreeSet<String> ts=new TreeSet<String>();
		ts.add("Beijing");
		ts.add("Shanghai");
		ts.add("Tianjing");
		ts.add("Chongqing");
		//TreeSet在java中的字母排序是按A~Z排序的,观察结果。
		
		//第二种方法输出数组信息
		Iterator<String> it = ts.iterator();
		while(it.hasNext()){
			
			System.out.println(it.next());
		}

		
	}

}

输出结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值