2.对象容器(1)
今天学习一下Java里面的一些容器的基本功能,今天先来Arraylist。一、Arraylist
容器类主要是为了存放一些按某些方式排列的对象,arraylist是一种容器,相对数组那种静态分配存储空间,容器动态分配空间更为节省,而且通常容器内部有固定套路的方法来实现数据的插入、删除、修改等等操作,非常方便,而且效率通常很高。一般格式:
容器类型<元素类型>(例如Arraylist<String>)
1.创建(举例):
ArrayList<String> k=new ArrayList<String>();
2.添加元素:
String s="ff";
int index=1;
k.add(s);
k.add(index,s);//表示在第一个位置插入s,注意索引若为不存在的数会出错
3.获取ArrayList中元素的个数
int size=k.size();
4.读取元素
String s=new String();
s=k.get(index);//读取相应位置的元素
5.删除元素
k.remove(index);
6、判断是否已经存在某对象
boolean p=k.contain(s);
以设计一个记事本为例,其主要有以下几个功能:
- 能存储记录
- 不限制能存储的记录的数量
- 能查看存进去的每一条记录
- 能删除一条记录
- 能列出所有的记录
所以我们据此设计几个接口:
1.Add(String s); //添加记录
2.Get(int index); //查看某条记录
3.Remove(int index); //删除某条记录
4.list(); //列出所有记录
5.getsize(); //查看记录数目
public class Note {
private ArrayList<String> k=new ArrayList<String>();
public void add(String s)
{
k.add(s);
}
public String get(int index)
{
return k.get(index);
}
public void remove(int index)
{
k.remove(index);
}
public int getsize()
{
return k.size();
}
public String[] list()
{
String []s=new String[k.size()];
k.toArray(s);
return s;
}
public static void main(String[] args) {
Note notes=new Note();
System.out.println("hello");
Scanner in=new Scanner(System.in);
int num=-2;
String[] temp;
String f=new String();
int no=1;
System.out.println(" 0:add list
1:remove list
2:getsize
3:print all list");
while(num!=-1)
{
num=in.nextInt();
in.nextLine(); //caution!!
switch (num)
{
case 0:
System.out.println("add what?? enter is over");
notes.add(in.nextLine());
break;
case 1:
System.out.println("remove what?? input the num");
notes.remove(in.nextInt());
break;
case 2:
System.out.println("the size of notes is:"+notes.getsize());
break;
case 3:
System.out.println("the list of notes is:");
temp=new String[notes.getsize()];
temp=notes.list();
for(String a:temp)
{
System.out.println(no+"."+a);
no++;
}
break;
}
no=1;
}
}
}
比较简单,纯当练习练习,也没什么价值,大佬就不要看了。
另外这段程序在连续使用nextInt()和nextLine()时,出了一点小问题,类似C语言,由于nextInt()好像不会读取你输入结束的回车键'
',这时不做处理的话,nextLine()就会把'
'当作输入的字符读走,并认为输入结束。解决办法是类似在C语言中加入getchar()一样,之间插入一个nextLine(),就不会受到换行符的影响了。另外分享一个讲解nextInt(),nextLine()与next()区分的blog:https://www.bbsmax.com/A/kjdwb1L65N/