1.Iterator是什么?
答:Iterator(迭代器)适用于遍历集合类的标准访问方式。Collection接口中定义了方法iterator(),实现Collection接口的各集合类,必然都实现方法iterator,必然统一返回一个实现了Iterator接口的对象2.Array和ArrayList有何区别?什么时候更适合用Array?
答:Array的长度和数据类型一旦给定不能更改,而ArrayList存储的是对象,利用它,可以改变数据类型和数组的长度。
3.ArrayList和LinkedList有何区别?
答:ArrayList采用数组来存储线性表中的元素,是线性表的顺序存储结构,因此,它的随机访问速度快,但是对中间元素的插入,删除速度比较慢。LinkList用链接存储结构类存储线性表中的元素,它适用于元素的插入,删除操作。
4.哪些集合类是线性安全的?
答:statck ,vector,hashtable,enumeration;
5.Collections类是什么?
答:Collections是一个算法类,进一步提供一系列的静态方法,实现对集合的排序,替换,交换,搜索,拷贝等操作。
6.Comparable和Comparator接口是什么?
Java提供了只包含一个compareTo()方法的Comparable接口。这个方法可以个给两个对象排序。具体来说,它返回负数,0,正数来表明输入对象小于,等于,大于已经存在的对象。Java提供了包含compare()和equals()两个方法的Comparator接口。compare()方法用来给两个输入参数排序,返回负数,0,正数表明第一个参数是小于,等于,大于第二个参数。equals()方法需要一个对象作为参数,它用来决定输入参数是否comparator相等。只有当输入参数也是一个comparator并且输入参数和当前comparator的排序结果是相同的时候,
这个方法才返回true。
7.Collection接口的常用方法有哪些?
答:--boolean add(Object obj) 添加一个元素
--boolean addAll(Collection c)添加一个集合中的所有元素
--boolean remove(Object obj) 删除一个元素
--boolean removeAll(Collection c)删除一个集合中的所有元素
--boolean retainAll(Collection c)求两个集合的交集
--int size()获取集合中的元素个数
--boolean isEmpty()
--boolean contains(Object o)判断是否包含指定元素
--Object []toArray()返回集合中所有元素的数组
-- terator Iteratot()用于遍历集合中的元素
8.Linkedlist,arraylist,hashmap的遍历程序。
答:Arraylist:
Arraylist<T> s1=new Arraylist<T>();
Iterator ite1=s1.iterator();
while(ite1.Hasnext())
{
T obj=ite1.next();
System.ou.print(T+" ");
}
hashmap:
通过set视图:
Map<T,T> map=new HashMap<T,T>();
Set<Map.Entry<T,T>> allset=map.entrySet();
Iterator<Map.Entry<T,T>> istr=allset.iterator();
while(iter.Hasnext())
{
Map.Entry<T,T> me=iter.next();
System.ou.print(me.getKey+" "+me.getValue);
}
作业题:
一,用Java模拟一个堆栈或者队列数据结构。
模拟堆栈:
public class zhan {
private LinkedList link;
public zhan(){
link = new LinkedList();
}
public void tianjia(Object a){
link.addFirst(a);
}
public void chuzhan(){
for(int i=0;i<link.size();i++){
System.out.println(link.get(i));
}
public class Zhanlist {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
zhan t=new zhan();
t.tianjia("粉");
t.tianjia("诗");
t.tianjia("热");
t.tianjia("狂");
t.chuzhan();
}
}
运行结果:
run:
狂
热
诗
粉
成功构建 (总时间: 0 秒)
模拟队列:
public class team {
private LinkedList link;
public team(){
link = new LinkedList();
}
public void tianjia(String a){
link.addLast(a);
}
public void chudui(){
// for(int i=0;i<link.size();i++){
// System.out.println(link.get(i));
// }
int i=0;
while(i<link.size()){
System.out.println(link.get(i));
i++;
}
}
}
public class Teamlist {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
team t=new team();
t.tianjia("竭");
t.tianjia("尽");
t.tianjia("全");
t.tianjia("力");
t.chudui();
}
}
运行结果:
run:
竭
尽
全
力
成功构建 (总时间: 0 秒)
二,java用LinkedList实现栈
public class Stack {
private LinkedList link= new LinkedList();
public void Push(Object a){
link.addFirst(a);
}
public Object Pop(){
if(!link.isEmpty()){
return link.removeFirst();
}
else System.out.println("此栈为空");
return null;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Stack stack = new Stack();
stack.Push("低");
stack.Push("手");
stack.Push("高");
stack.Push("眼");
System.out.println(stack.Pop());
System.out.println(stack.Pop());
System.out.println(stack.Pop());
System.out.println(stack.Pop());
}
}
运行结果:
run:
眼
高
手
低
成功构建 (总时间: 0 秒)
三,
栈是一种数据结构,只能从一端进行存储和访问。常规操作有压入栈和弹出栈。
特性:先进先出,LIFO
以下是用ArrayList为内核实现一个栈的数据结构
package mnstack;
import java.util.ArrayList;
import java.util.List;
import java.util.EmptyStackException;
/**
*
* @author xxxx
*/
public class MnStack {
private ArrayList m=new ArrayList();
public void push(Object s){
m.add(s);
}
public Object pop(){
if(m.isEmpty()){throw new EmptyStackException();}
else return m.remove(m.size()-1);
}
public void clear(){
m.clear();
}
public void empty(){
m.isEmpty();
}
public Object getTop(){
if(m.isEmpty()){return false;}
else return m.get(0);
}
public int getSize(){
return m.size();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
MnStack S=new MnStack();
S.push(1);
S.push(6);
S.push(8);
System.out.println(S.pop());
System.out.println(S.getTop());
System.out.println(S.pop());
S.clear();
System.out.println(S.getSize());
S.clear();
}
}
运行结果:
run:
8
1
6
0
成功构建 (总时间: 0 秒)
总结和收获:
因为之前java并没有学过集合类,所以理解起来很费劲儿,而且感觉掌握的东西很多很乱,对于每个类作用用法还需要加强了解。今天把书上第十一章集合类看了一下,但是感觉书上说了大概,具体还是要多动手编程,慢慢的掌握。