JAVA集合

JAVA集合-集合的引入

当我们有种需求,需要存储多个元素的结构时,我们前面讲过数组,数组可以存储。但是数组也有它的弊端,使用的时候,

必须先定义好长度,也就是数组的长度是固定,不能根据我们的需求自动变长或者变短

JAVA集合-List集合

Collection接口是集合的老祖宗,定义了接口的基本方法,我们查看api 文档:

QQ鎴浘20161124155311.jpg


List是Collection接口的子接口,也是最常用的接口,此接口对Collection接口进行了大量的扩展,List集合里的元素是可以重复的。


List接口的主要实现类有ArrayList,和LinkedList。

在数据量不大的情况下,这两个类性能差别不大,

一般情况下,集合里的元素很少变化的,一般用ArrayList,

假如集合里元素经常变动,要用LinkedList;底层实现有差别的。


我们给下实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package  com.huawei;
 
import  java.util.ArrayList;
 
public  class  TestArrayLit {
 
     private  static  void  pringArrayList(ArrayList<String> arrayList){
         System.out.println( "当前的集合元素:" );
         for ( int  i= 0 ;i<arrayList.size();i++){
             System.out.println(arrayList.get(i));
         }
     }
     
     public  static  void  main(String[] args) {
         ArrayList<String> arrayList= new  ArrayList<String>();
         // 添加元素
         arrayList.add( "张三" );
         arrayList.add( "李四" );
         pringArrayList(arrayList);
         // 在指定位置插入元素
         arrayList.add( 1 "小张三" );
         pringArrayList(arrayList);
         // 元素的替换
         arrayList.set( 2 "小李四" );
         pringArrayList(arrayList);
         // 移除元素
         arrayList.remove( 0 );
         pringArrayList(arrayList);
     }
}
package  com.huawei;
 
import  java.util.LinkedList;
 
public  class  TestLinkedList {
 
     private  static  void  pringLinkedList(LinkedList<String> linkedList){
         System.out.println( "当前元素的集合:" );
         for ( int  i= 0 ;i<linkedList.size();i++){
             System.out.print(linkedList.get(i)+ " " );
         }
         System.out.println();
     }
     
     public  static  void  main(String[] args) {
         LinkedList<String> linkedList= new  LinkedList<String>();
         linkedList.add( "张三" );
         linkedList.add( "李四" );
         linkedList.add( "王五" );
         linkedList.add( "李四" );
         linkedList.add( "赵六" );
         pringLinkedList(linkedList);
         
         // indexOf 寻找位置
         System.out.println(linkedList.indexOf( "李四" ));
         pringLinkedList(linkedList);
         
         // peekFirst 获取第一个元素
         System.out.println(linkedList.peekFirst());
         pringLinkedList(linkedList);
         
         // peekLast 获取最后一个元素
         System.out.println(linkedList.peekLast());
         pringLinkedList(linkedList);
         
         // pollFirst 摘取第一个元素
         System.out.println(linkedList.pollFirst());
         pringLinkedList(linkedList);
         
         // pollLast 榨取最后一个元素
         System.out.println(linkedList.pollLast());
         pringLinkedList(linkedList);
     }
}

JAVA集合-集合的遍历


前面我们讲了最简单的集合遍历用for循环。

今天再介绍两个 Iterator和foreach;


首先是Iterator遍历器,我们给下实例:

先给一个Student类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package  com.huawei;
 
public  class  Student {
 
     private  String name;
     private  Integer age;
     
     
     
     public  Student() {
         super ();
         // TODO Auto-generated constructor stub
     }
     public  Student(String name, Integer age) {
         super ();
         this .name = name;
         this .age = age;
     }
     public  String getName() {
         return  name;
     }
     public  void  setName(String name) {
         this .name = name;
     }
     public  Integer getAge() {
         return  age;
     }
     public  void  setAge(Integer age) {
         this .age = age;
     }
     
     
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package  com.huawei;
 
import  java.util.Iterator;
import  java.util.LinkedList;
 
 
public  class  TestIterator {
 
     public  static  void  main(String[] args) {
         LinkedList<Student> list= new  LinkedList<Student>();
         list.add( new  Student( "张三" , 10 ));
         list.add( new  Student( "李四" , 20 ));
         list.add( new  Student( "王五" , 30 ));
         
         /**
          * 用Iterator遍历集合
          */
         Iterator<Student> it=list.iterator();   // 返回一个迭代器
         while (it.hasNext()){
             Student s=it.next();    // 返回迭代的下一个元素。
             System.out.println( "姓名:" +s.getName()+ "年龄:" +s.getAge());
         }
     }
}

foreach遍历:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package  com.huawei;
 
import  java.util.LinkedList;
 
 
public  class  TestForeach {
 
     public  static  void  main(String[] args) {
         LinkedList<Student> list= new  LinkedList<Student>();
         list.add( new  Student( "张三" , 10 ));
         list.add( new  Student( "李四" , 20 ));
         list.add( new  Student( "王五" , 30 ));
         
         /**
          * 用foreach遍历
          */
         for (Student s:list){
             System.out.println( "姓名:" +s.getName()+ "年龄:" +s.getAge());
         }
     }
}

JAVA集合-Set集合


Set集合是Collection接口的子接口,没有对Collection接口进行扩展,里面不允许存在重复的内容;


演示代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package  com.huawei;
 
import  java.util.HashSet;
import  java.util.Iterator;
 
public  class  TestHashSet {
 
     public  static  void  main(String[] args) {
         /**
          * 1,HashSet是无序
          * 2,不循序有重复的值
          */
         HashSet<String> hs= new  HashSet<String>();
         hs.add( "21221" );
         hs.add( "112" );
         hs.add( "312" );
         hs.add( "421" );
         hs.add( "312" );
         
         /**
          * 用Iterator遍历集合
          */
         Iterator<String> it=hs.iterator();
         while (it.hasNext()){
             String s=it.next();
             System.out.println(s+ " " );
         }
     }
}

JAVA集合-Map集合


是存放一对值的最大接口,即接口中的每一个元素都是一对,以key->value键值对的形式保存;

我们这里讲解下Map的常用实现类HashMap;

我们给下演示代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package  com.huawei;
 
import  java.util.HashMap;
import  java.util.Iterator;
 
public  class  TestHashMap {
 
     public  static  void  main(String[] args) {
         HashMap<String,Student> hashMap= new  HashMap<String,Student>();
         hashMap.put( "1号" new  Student( "张三" , 10 ));
         hashMap.put( "2号" new  Student( "李四" , 20 ));
         hashMap.put( "3号" new  Student( "王五" , 30 ));
         
         // 通过key,获取value
         Student s=hashMap.get( "1号" );
         System.out.println(s.getName()+ ":" +s.getAge());
         
         Iterator<String> it=hashMap.keySet().iterator();  // 获取key的集合,再获取迭代器
         while (it.hasNext()){
             String key=it.next();   // 获取key
             Student student=hashMap.get(key);   // 通过key获取value
             System.out.println( "key=" +key+ " value=[" +student.getName()+ "," +student.getAge()+ "]" );
         }
     }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值