Java:顺序容器

所谓容器,就是“放东西的东西”。数组可以看作是一种容器,但是数组的元素个数一旦确定就无法改变,这在实际使用中是很大的不足。一般意义上的容器,是指具有自动增长容量能力的存放数据的一种数据结构。在面向对象语言中,这种数据结构本身表达为一个对象。所以才有“放东西的东西”的说法。


Java具有丰富的容器,Java的容器具有丰富的功能和良好的性能。熟悉并能充分有效地利用好容器,是现代程序设计的基本能力。

本章讲的是顺序容器,即放进容器中的对象是按照指定的顺序(放的顺序)排列起来的,而且允许具有相同值的多个对象存在。

```java
import java.util.ArrayList;				//ArrayList是一个泛型类(容器)

public class NoteBook {
	private ArrayList<String> notes = new ArrayList<String>();	
	//用来存放 String(<String>)类型数据的ArrayList(容器)
	//定义容器的时候要定义两个类型:容器的类型(ArrayList),元素的类型(<String>)
	public void add(String s)
	{
		notes.add(s);			
	}
	
	public void add(String s, int index)
	{
		notes.add(index, s);		//.add将对应类型的元素s放入容器类型(notes)的index位置
	}
	
	public int getSize()
	{
		return notes.size();		//.size获得notes中存放了多少东西
	}
	
	public String getNote(int index)
	{
		return notes.get(index);	//.get获取index位置的东西(从0开始)
	}
	
	public void removeNote(int index)
	{
		notes.remove(index);		//.remove删除index位置的元素(从0开始),并返回删除的东西
	}
	
	public String[] list()
	{
		String[] a = new String[notes.size()];
//		for(int i=0; i<notes.size(); i++)
//		{
//			a[i] = notes.get(i);
//		}
		notes.toArray(a);		//.toarray的作用和被注释大代码相同,都是将notes中的每一个元素存入a对应的位置
		return a;
	}
	
	public static void main(String[] args) {
		NoteBook nb = new NoteBook();
		nb.add("first");
		nb.add("second");
		nb.add("third", 2);
		System.out.println(nb.getNote(1));
		System.out.println(nb.getSize());
		nb.removeNote(1);	
		String[] a = nb.list();
		for(String s : a)
		{
			System.out.println(s);
		}
	}
	
}

结果:

second
3
first
third

容器中只能存入对象类型,无法存入值类型(会报错),如果要用值类型(int),可以使用对应的对象类型

原始类型           封装类   
  boolean              Boolean   
  char                 Character   
  byte                 Byte   
  short                Short   
  int                  Integer   
  long                 Long   
  float                Float   
  double               Double
  
  
容器的类型参数也允许自定义的对象类型:

```java
//主类(主java文件)
import java.util.ArrayList;

public class Database {
	private ArrayList<CD> listCD = new ArrayList<CD>();
	private ArrayList<DVD> listDVD = new ArrayList<DVD>();
	
	public void add(item item)
	{
		listItem.add(item);
	}
	
	public void add(CD cd)
	{
		listCD.add(cd);
	}
	
	public void add(DVD dvd)
	{
		listDVD.add(dvd);
	}
	
	public void list()
	{
		for(CD cd : listCD)
		{
			cd.print();
		}
		for(DVD dvd : listDVD)
		{
			dvd.print();
		}
	}
	
	public static void main(String[] args) {
		 Database db = new Database();
		 db.add(new CD("ab", "cd", 4, 60, "..."));
		 db.add(new CD("ef", "gh", 4, 60, "..."));
		 db.add(new DVD("hi", "jk", 60, "..."));
		 db.list();
	}


}
//CD类
public class CD{
	private String title;
	private String artist;
	private int numofTracks;
	private int playintTime;
	private boolean gotIt = false;
	private String comment;
	
	public CD(String title, String artist, int numofTracks, int playintTime, String comment) {
		super();
		this.title = title;
		this.artist = artist;
		this.numofTracks = numofTracks;
		this.playintTime = playintTime;
		this.comment = comment;
	}
	
	public static void main(String[] args) { 
		
	}

	public void print() {
		System.out.println("CD:" + title + ":" + artist);
		
	}
}

//DVD类
public class DVD{
	private String title;
	private String director;
	private int playintTime;
	private boolean gotIt = false;;
	private String comment;
	
	public DVD(String title, String director, int playintTime, String comment) {
		super();
		this.title = title;
		this.director = director;
		this.playintTime = playintTime;
		this.comment = comment;
	}

	public static void main(String[] args) {
		
	}

	public void print() {
		System.out.println("DVD:" + title + ":" + director);
		
	}

}

如上代码中,ArrayList使用的对象类型是自定义的,使用for-each循环遍历。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值