java容器怎么封装的_java基础-容器

容器是指对对象的容纳,java中主要有这几个容器:list(列表)、set(集合)、map(映射)。所有容器都无法保存基本数据类型,需要先把基本数据类型变为封装类,用容器保存封装结果。

一.List(列表)

1.ArrayList,线性表,容量大小可变的数组  <===>tArrayLisk()

2.LinkedList,链表,没有使用顺序存储机制,无法根据索引快速存取  <===>tLinkedList()

3.迭代器遍历LIst  <===>demo2()

1 public static voidtArrayList(){2 /*

3 ArrayList的构造方法:4 ArrayList a1=new ArrayList(); //构造一个空的线性表5 ArrayList a1=new ArrayList(b); //根据已有类集构造线性表6 ArrayList a1=new ArrayList(20); //构造指定初始容量的线性表7 */

8 ArrayList a1=newArrayList();9 a1.add("a");10 a1.add("z");11 a1.add("x"); //add(value),插入元素

12 a1.remove(0); //remove(index),根据数组索引删除元素

13 a1.set(0,"z1"); //set(index,value),重设指定索引处的值

14 System.out.println(a1.indexOf("z1")); //indexOf(value),获取指定元素的索引

15 a1.add("z1");16 System.out.println(a1.lastIndexOf("z1")); //latIndexOf()value,获取指定元素最后一次出现的位置17 //subList(),获取列表的子列表,需要给出起止位置 listIterator(),生成一个列表迭代器,此迭代器功能强大

18

19 for(int i=0;i

20 System.out.print(a1.get(i)+",");21 }22

23 }24 public static voidtLinkedList(){25 LinkedList l=newLinkedList();26 l.addFirst(1); //addFirest(),向链表头添加元素

27 l.addLast(10); //addLast(),向链表尾添加元素

28 l.removeLast(); //removeLast(),移除链表尾部元素

29 System.out.println(l.getFirst()); //getFirst(),获取链表头元素

30 }31 public static voiddemo2(){32 //使用迭代器遍历List

33 List l1=new ArrayList();34 l1.add("a1");35 l1.add("a2");36 l1.add("a3");37 for(Iterator it=l1.iterator();it.hasNext();){ //使用hasNext()判断序列中是否还有元素

38 String s=it.next(); //使用Next()获取序列中下一个元素

39 System.out.println(s);40 }41 }

二.Set(集合)

Set和List的区别:Set没有顺序,不允许保存相同值的元素。

1.Iterator,迭代器,单向移动,实现遍历  <===>demo1()

2.for-each遍历  <===>demo2()

3.HashSet散列集,避免Set的元素重复  <===>demo3()

4.TreeSet,实现红黑树数据结构后的set

5.比较HashSet、TressSet、LinkedHashSet的区别  <===>demo4()

public static voiddemo1(){

Set s1=new HashSet();

s1.add("a1");

s1.add("a2");

s1.add("a3");for(Iterator it=s1.iterator();it.hasNext();){

String s=it.next();

System.out.println(s);

}

}public static voiddemo2(){

Set s1=new HashSet();

s1.add("a1");

s1.add("a2");

s1.add("a3");for(String s:s1){ //for-each遍历set,将每一次的值存在s中

System.out.println(s);

}

}public static voiddemo3(){

Set s1=new HashSet(); //new一个HashSet,通过下边的for循环为该set填充值

for(int i=1;i<100;i++){

Integer temp=new Integer(i%6);

s1.add(temp);

}for(Iterator it=s1.iterator();it.hasNext();){ //通过Iterator遍历set

System.out.println(it.next());

}

}public static voiddemo4(){//比较HashSet、TreeSet、LinkedHashSet的区别

Set s1=new HashSet();

Set s2=new TreeSet();

Set s3=new LinkedHashSet();for(int i=0;i<5;i++){int s=(int)(Math.random()*100);

Integer temp=newInteger(s);

s1.add(temp);

s2.add(temp);

s3.add(temp);

System.out.println("第"+i+"次产生的随机数为:"+s);

}

System.out.println("HashSet:"+s1); //元素存放顺序和添加时的顺序无关

System.out.println("TreeSet:"+s2); //对set中的元素按照值进行排序存放

System.out.println("LinkedHashSet:"+s3); //元素存放顺序按照添加时的顺序

}

三.Map(映射)

Map维护键值对,一个Map中不能有重复的键,每个键只能映射一个值,键与值都视为对象,Map允许null值,基于哈希表的Map接口实现,哈希表的作用是保证键的唯一性。

1.Map遍历的三种方法

1 public static void byValue(Mapmap){2 String value=null;3 Iterator it= map.values().iterator(); //通过HashMap.values()得到“值”的集合,再去遍历值的集合

4 while(it.hasNext()){5 value=(String)it.next();6 System.out.println(value);7 }8 }9 public static void byKey(Mapmap){10 String key=null;11 String value=null;12 Iterator it=map.keySet().iterator(); //通过map.KeySet()得到key的集合

13 while(it.hasNext()){14 key=(String)it.next();15 value=(String)map.get(key);16 System.out.println("key:"+key+",value:"+value);17 }18 }19 public static void byEntry(Mapmap){20 String key=null;21 String value=null;22 Iterator it=map.entrySet().iterator(); //通过entrySet()实现

23 while(it.hasNext()){24 Map.Entry entry=(Map.Entry) it.next();25 key=(String)entry.getKey();26 value=(String)entry.getValue();27 System.out.println("key:"+key+",value:"+value);28 }29 }

2.HashMap散列映射

3.其他Map

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值