A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© mortonnnn 中级黑马   /  2015-7-18 00:23  /  220 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

两大类:
Collection--单列集合类的根接口
Map--双列集合类的根接口

collection分为List和Set:
list:ArrayList,LinkedList,Vector
Set:HashSet(LinkedHashSet),TreeSet

collection常用方法10个:
boolean7个:
boolean add(Object o)
boolean addAll(Collection c)
boolean remove(Object o)
boolean removeAll(Collection c)
boolean isEmpty()
boolean contains(Object o)
boolean containsAll(Collection c)

void1个:
void clear()

Iterator1个:
Iterator iterator()

int1个:
int size()


List作为collection的接口,有几个常用方法:
boolean addAll(int index, Collection c)
void add(int index, Object element)
Object get(int index)
Object remove(int index)
Object set(int index, Object element)
int indexOf(Object c)
int lastIndexOf(Object c)
List subList(int fromIndex,int toIndex)

ArrayList作为List的一个实现类,是一个长度可变的数组

public class Example01 {
        public void static main(String[] args){
                ArrayList list = new ArrayList();
                list.add("m");
                list.add("o");
                list.add("r");
                System.out.println(list.get[0]);
                System.out.println(list.size());
        }
}

LinkedList:
具有双向循环链表结构,所以它具备增删元素效率高的特点
它有一些特有的方法:
void add(int index, E element)
void addFirst(Object o)
void addLast(Object o)
Object getFirst()
Object getLast()
Object removeFirst()
Object removeLast()---移除并返回此列表的最后一个元素


public class Example02{
        public void static main(String[] args){
                LinkedList list = new LinkedList();
                list.add("aa");
                list.add("bb");
                list.add("cc");
                list.add("dd");
                list.add("ee");
                System.out.println(list.toString());                //取出并打印集合里的元素
                list.add(1,"jj");
                list.addFirst("aa");
        }
}

Iterator接口:
主要是hasNext()方法和next()方法

public class Example03{
        public void static main(String[] args){
                ArrayList list = new ArrayList();
                list.add("aaaaaaaaaaaa");
                list.add("bbbbbbbbbbb");
                list.add("ccccccccccccc");
                list.add("dddddddddd");
                                       
                Iterator iterator = list.iterator();
                while(iterator.hasNext()){
                        Object o = iterator.next();
                        System.out.println(o);
                }
        }
}


jdk5.0新特性---foreach循环

格式:
for(容器内变量类型 临时变量 : 容器变量){
}

foreach的局限性:
只能访问,而不能修改

for循环和iterator迭代都能实现修改(但迭代器的修改要注意方法)

class Example04{
        public void static main(String[] args){
                ArrayList list  = new ArrayList();       
                list.add("aa");
                list.add("cc");
       
        for(int i = 0 ; i < 5 ; i ++){
                list.add(i);
        }

        for(String str: list){
                str = "ddd";
        }

        }
}

class Example05 {
        public void static main(String[] args){
                ArrayList list  = new ArrayList();
                list.add("aaa");
                list.add("bbb");
                list.add("ccc");

                Iterator i = list.iterator();
                while(i.hasNext()){
                        Object o = i.next();
                        if("bbb".equals(o)){
                                list.remove(o);
                        }
                }
        }
}
这样用list直接删除会报错,正确的删除方法:

class Example06 {
        public void static main(String[] args){
                ArrayList list  = new ArrayList();
                list.add("aaa");
                list.add("bbb");
                list.add("ccc");
               
                Iterator i = list.iterator();
                while(i.hasNext()){
                        Object o  =i.next();
                        if("bbb".equals(o)){
                                list.remove(o);
                                break;
                        }
                }
        }
}

或者用iterator本身的方法i.remove()

if("bbb".equals(o)){
        i.remove();
}


ListIterator接口:
主要是多了三个方法:
hasPrevious();
previous();
add(Object o);---类似iterator的remove();

实例化时,要传一个int参数,指定开始迭代的起始位置

而且,ListIterator只能用于List集合


public class Example08 {
        public void static main(String[] args){
                ArrayList list = new ArrayList();
                list.add("feriosa")
                list.add("max");
                list.add("nux");
               
                ListIterator it = list.listIterator(list.size());
                while(it.hasPrevious()){
                        Object o = it.previous();
                }
        }
}

Enumeration---Iterator的前身(用于Vector集合)
三行重要代码:
Enumeration e =  vector.elements();
while(e.hasMoreElements()){
        Object o  = e.nextElements();
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马