集合的使用---20161206

集合

集合:将多个元素组成一个单元的对象,类似于数组,但不受长度限制,且可以存储不同数据类型的元素。
例:

List al = new ArrayList<>();
al.add( "123" );
al.add( '1' );
al.add( 12.3 );
al.add( false );
System.out.println( al );

输出结果为:


测试1.png

集合的分类:ArrayList, HashMap.......

ArrayList

在顺序查询是使用较好。
存在索引下标index,顺序排列。

HashMap

不存在索引,无序排列,以键值对( key, value )的形式存入。

Map map = new HashMap<>();
map.put( "10001", "小何" );
map.put( "10002", "小吴" ); 

HashMap中主要的一些API(HashMap继承自Map接口)

map.get( key ); -----> 得到key相应的value值。
map.put( String, String ); -----> 传入数据
map.containsKey( Object k ); -----> 判断map里面是否存在key为k的键值对。
map.containsValue( Object v ); -----> 是否存在value为v的键值对
Set( String ) set = map.keySet(); -----> 获取map中的所有key值

Iterator it = map.iterator(); -----> 建立map的迭代器
其中迭代器的使用套路如下:
  Iterator it = map.iterator();//迭代器的建立,就是把集合以指针的           形式保存
  while( it.hasNext() ) {  //判断当前指针指向的元素是否存在下一个元素
    String str = it.next();//获取当前指针指向的元素,并自动指向下一个元素
  }
集合的使用---20161206_第1张图片
迭代器解析.png

主函数

package com.newer.test1;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class TestStudent4 {

    public static void main( String[] args ) {

        List list = new ArrayList<>();
        list.add(new Student("Tom", 18, 100, "class05"));
        list.add(new Student("Jerry", 22, 70, "class04"));
        list.add(new Student("Owen", 25, 90, "class05"));
        list.add(new Student("Jim", 30, 80, "class05"));
        list.add(new Student("Steve", 28, 66, "class06"));
        list.add(new Student("Kevin", 24, 100, "class04"));
        list.add(new Student("Owen", 25, 90, "class07"));
        list.add(new Student("Jim", 30, 80, "class08"));
        list.add(new Student("Steve", 28, 66, "class07"));
        list.add(new Student("Kevin", 24, 100, "class08"));
        
        Map> map = new HashMap<>();
    
        for( int i = 0; i < list.size(); i++ ) {
            String classNum = list.get( i ).getClassNum();
            if( map.containsKey( classNum ) ) {
                map.get( classNum ).add( list.get( i ) );
            }else {
                ArrayList str1 = new ArrayList<>();
                str1.add( list.get( i ) );
                map.put( classNum ,  str1 );
            }
        }
        System.out.println( map );
        
        //获取map中的所有键值
        Set set = map.keySet();
        System.out.println( set );
        //迭代set, 通过key 获取value里面的值的属性
        Iterator it = set.iterator();
        while( it.hasNext() ) {
            String str2 = it.next();
            double sum = 0;
            for( int i = 0; i < map.get( str2 ).size(); i++ ) {
                sum += map.get( str2 ).get( i ).getScore();
            }
            System.out.println( str2+"班的平均成绩为:"+( sum/map.get( str2 ).size() ) );
        }
    }
}```
---
**Student类**
```java
package com.newer.test1;

public class Student {

    private String name;
    private int age;
    private double score;
    private String classNum;
    
    public Student() {}
    
    public Student( String name, int age, double score, String classNum ) {
        this.name = name;
        this.age = age;
        this.score = score;
        this.classNum = classNum;
    }
    
    public String toString() {
        return "姓名:"+name+"年龄:"+age+"成绩:"+score+"班级号:"+classNum;
    }
    
    public void setName( String name ) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setAge( int age ) {
        this.age = age;
    }
    public int getAge() {
        return age;
    }
    public void setScore( double score ) {
        this.score = score;
    }
    public double getScore() {
        return score;
    }
    public void setClassNum( String classNum ) {
        this.classNum = classNum;
    }
    public String getClassNum() {
        return classNum;
    }
}```

你可能感兴趣的:(集合的使用---20161206)