您的位置:首页 > 职场人生

[黑马程序员](第10-15天)集合类(上)

2015-07-21 17:50 501 查看
------- android培训java培训、期待与您交流! ----------两大类:
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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: