集合

集合:java的集合类主要由两个接口派生而出:CollectionMap,这两个接口派生出一些子接口或实现类。


Java的集合主要分为3大类

1.Set集合:将一个对象添加到Set集合时,Set集合无法记住添加的顺序,因此Set集合中的元素不能重复,否则系统无法识别该元素,访问Set集合中的元素也只能根据元素本身进行访问;

2.List集合:与数组类似,List集合可以记住每次添加元素的顺序,因此可以根据元素的索引访问List集合中的元素,List集合中的元素可以重复且长度是可变的;

3.Map集合:每个元素都是有Key/value键值对组成,可以根据每个元素的Key来访问对应的valueMap集合中的key不允许重复,value可以重复。

Collection接口

Collection接口是SetQueueList接口的父接口,该接口中定义的方法可以操作这三个接口中的任一个集合,Collection接口中德常用方法如下:


使用Collection是需要注意的一下问题:

1.add()addAll()ewmove()、removeAll()、和retainAll()方法可能会引发不支持该操作的UnsupportedOperationException异常

2.将引发一个不兼容的对象添加到集合中是,将ClassCastException异常

3.Collection接口没有提供获取某个元素的方法,但可以通过iterator()方法获取迭代器来遍历集合中的所有元素

4.虽然Collection中可以存储任何Object对象,但不建议在同一个集合容器中存储不同类型的对象,建议使用泛型增强集合的安全性,以免引起ClassCastException异常

迭代器接口:

迭代器(Iterator)可以采用统一的方式对Collection集合中的元素进行遍历操作,开发人员无需关心Collection集合中的内容,也不必实现IEnumerable或者IEnumerator接口就能够使用foreach循环遍历集合中的部分或全部元素。

JavaJDK5.0开始增加了Iterable新街口,该接口是Collection接口的父接口,因此所有实现了Iterator的集合类都是可迭代的,都支持foreach循环遍历。Interator接口中的iterator()方法可以获取每个集合自身的迭代器IteratorIterator是集合的迭代器接口,定义了常见的迭代方法,用于访问、操作集合中的元素。

List集合:

代码演示:

import java.util.ArrayList;

import java.util.Iterator;

public class ArrayLiseDemo {

public static void main(String[] args) {

ArrayList<String> list = new ArrayList<String>();

list.add("北京");

list.add("上海");

list.add("青岛");

//便利集合中元素

System.out.println("-----foreach方法遍历-------");

for(String a : list){

System.out.println(a);

}

System.out.println("-----下标方法遍历-------");

for(int i = 0;i < list.size();i++){

String a = list.get(i);//取出集合中元素

System.out.println(a);

}

System.out.println("-----迭代器方法遍历-------");

//用Iterator遍历,支持泛型,因此可以定义迭代器的类型

Iterator<String> it = list.iterator();

while(it.hasNext())//判断元素是否到达最后一个元素

{

String a = it.next();

System.out.println(a);

}

System.out.println("************");

//remove下标的方法移除元素

list.remove(0);

Iterator<String> it1 = list.iterator();

while(it1.hasNext())

{

String a = it1.next();

System.out.println(a);

}

System.out.println("************");

//remove对象的方法移除元素

list.remove("上海");

for(String a : list){

System.out.println(a);

} }}

 

ArraylistVector的区别:它俩的用法完全一致。ArrayList是线程不安全的,不是同步的, 而Vector是线程同步的。在多线程编程是才能体现出区别,在多线程是Vector由于是 同步的所以效率比较低,因此多使用Arraylist

Vector的子类stack:具有栈先进后出的特性

代码示例:import java.util.Stack;

 

import com.sun.org.apache.xerces.internal.util.SynchronizedSymbolTable;

public class StackDemo {

public static void main(String[] args) {

Stack<Integer> s = new Stack<Integer>();

//stack添加元素

for(int i = 0; i < 5; i++){

s.add(i);

}

System.out.println(s);

while(!s.isEmpty()){//判断是否为空

//如果不为空使用pop方法弹出元素,并赋给a

int a = s.pop();

System.out.println(a);

}}}

 

 



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值