三种集合框架

java三种集合框架


一、
1、java.util.List:线性,有下标,长度可变,有序的(先进先出),可重复
2、java.util.Set:非线性,无下标,不可重复,无序,长度可变
3、java.util.Map:K是在set中的,所以K不重复,每一个K对应一个V,V是可重复的
二、
三种遍历方法:
1、有下标的可用三种遍历方式,最后一种加强for循环的效率最高,可用系统测试时间的方法来测试
2、没下标的只能用后两种

三、
要明确的一点,我们定义一个方法时要知道它是干什么的,参数是什么,返回值是什么

四、
要实现一个集合只需要:创建集合对象,将元素装入集合,遍历


/**
* 队列测试
* 大小可变数组的实现:线性,有下标,长度可变,有序的(先进先出),可重复
* @author Administrator
*
*/
public class ArrayList {
public static void main(String[] args){
//创建队列对象
java.util.ArrayList<String> list=new java.util.ArrayList<String>();

//获取系统时间
long t1=System.currentTimeMillis();

//装入元素
for(int i=0;i<100000;i++){
String str="元素"+i;
//将元素装入队列,于是队列就有了长度
list.add(str);
}
list.add("元素0");

//遍历1:用for循环
for(int i=0;i<list.size();i++){
//取出元素一次,就输出一次
String str=list.get(i);
System.out.println(str);
}
//遍历完了之后再统计时间
long t2=System.currentTimeMillis();
System.out.println((t2-t1));


//遍历2:通过迭代循环,就相当于用一个中间容器来传送
//调用这个方法,返回一个类型
// java.util.Iterator<String> iter=list.iterator();
// //判断迭代器中是否有元素,用while循环循环次数就可以输出所有的元素,用if只可以得到一个元素
// while(iter.hasNext()){
// //如果有,就取出一个
// String str=iter.next();
// System.out.println(str);
// }

// //遍历3:加强for循环,遍历后面的容器放到前面的容器中.最快,但是时间每次都会变化
// for(String str:list){
// System.out.println(str);
// }


}

}


2、

/**
* 无序列表(集合测试)
* HashSet:非线性,无下标,不可重复,无序,长度可变
* @author Administrator
*
*/
public class HashSetTest {
public static void main(String[] args){

//创建集合对象
java.util.HashSet<String> set=new java.util.HashSet<String>();

//装入元素
for(int i=0;i<100;i++){
String str="元素"+i;
//将元素装入集合中
set.add(str);
}

//为了判断元素0是替换掉原来的还是根本没加进去,结果证明是没加进去,boolean的值只有真假两个
boolean b=set.add("元素0");
System.out.println(b);

//遍历,不能再通过下标遍历了
//遍历1:
// java.util.Iterator< String> iter=set.iterator();
// while(iter.hasNext()){
// String str=iter.next();
// System.out.println(str);//打印出来的结果是无序的
// }

//遍历2:for循环加强
for(String str:set){
System.out.println(str);
}

}

}


3、

/**
* 映射测试
* HashMap:
* K<-->V
* K是在set中的,所以K不重复
* 每一个K对应一个V,V是可重复的,所以就相当于数学中的一个原像可以有多个像,即
* @author Administrator
*
*/
public class HashMap {
public static void main(String[] args){
//创建映射对象
java.util.HashMap<Integer, String> map=new java.util.HashMap<Integer, String>();

//装入映射关系
for(int i=0;i<10;i++){
int num=201108071+i;
String name="学生";
//装入映射,不能用add
map.put(num, name);
}
//添加映射
map.put(2011080712,"张志君");

//遍历不能用这个了:java.util.Iterator<E>,也不能用这个java.util.HashSet<E>,只能用
//得到装有K的Set
java.util.Set<Integer> keys=map.keySet();
for(int num:keys){
//根据K得到对应的V
String name=map.get(num);
System.out.println(num+" "+name);
}

}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值