集合
集合:将多个元素组成一个单元的对象,类似于数组,但不受长度限制,且可以存储不同数据类型的元素。
例:
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<String, String> 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<String> it = map.iterator(); -----> 建立map的迭代器
其中迭代器的使用套路如下:
Iterator<String> it = map.iterator();//迭代器的建立,就是把集合以指针的 形式保存
while( it.hasNext() ) { //判断当前指针指向的元素是否存在下一个元素
String str = it.next();//获取当前指针指向的元素,并自动指向下一个元素
}
迭代器解析.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<Student> 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<String, ArrayList<Student>> 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<Student> str1 = new ArrayList<>();
str1.add( list.get( i ) );
map.put( classNum , str1 );
}
}
System.out.println( map );
//获取map中的所有键值
Set<String> set = map.keySet();
System.out.println( set );
//迭代set, 通过key 获取value里面的值的属性
Iterator<String> 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;
}
}```