集合
集合:將多個(gè)元素組成一個(gè)單元的對(duì)象,類似于數(shù)組,但不受長(zhǎng)度限制毡证,且可以存儲(chǔ)不同數(shù)據(jù)類型的元素赔癌。
例:
List al = new ArrayList<>();
al.add( "123" );
al.add( '1' );
al.add( 12.3 );
al.add( false );
System.out.println( al );
輸出結(jié)果為:
集合的分類:ArrayList, HashMap.......
ArrayList
在順序查詢是使用較好。
存在索引下標(biāo)index,順序排列鲸伴。
HashMap
不存在索引府蔗,無(wú)序排列,以鍵值對(duì)( key, value )的形式存入汞窗。
Map<String, String> map = new HashMap<>();
map.put( "10001", "小何" );
map.put( "10002", "小吳" );
HashMap中主要的一些API(HashMap繼承自Map接口)
map.get( key ); -----> 得到key相應(yīng)的value值姓赤。
map.put( String, String ); -----> 傳入數(shù)據(jù)
map.containsKey( Object k ); -----> 判斷map里面是否存在key為k的鍵值對(duì)。
map.containsValue( Object v ); -----> 是否存在value為v的鍵值對(duì)
Set( String ) set = map.keySet(); -----> 獲取map中的所有key值
Iterator<String> it = map.iterator(); -----> 建立map的迭代器
其中迭代器的使用套路如下:
Iterator<String> it = map.iterator();//迭代器的建立仲吏,就是把集合以指針的 形式保存
while( it.hasNext() ) { //判斷當(dāng)前指針指向的元素是否存在下一個(gè)元素
String str = it.next();//獲取當(dāng)前指針指向的元素不铆,并自動(dòng)指向下一個(gè)元素
}
主函數(shù)
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, 通過(guò)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+"班的平均成績(jī)?yōu)椋?+( 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+"成績(jī):"+score+"班級(jí)號(hào):"+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;
}
}```