数组的定义与初始化:
一维数组
类型标识符数组名[];或类型标识符[ ] 数组名
int intArray [ ]; int[ ] intArray;
类型标识符[ ] 数组名=new 类型标识符[数组长度]
int[] scores=new int[20];
int[] scores={68,79,95,99,85};
int[] scores=new int[]{68,79,95,99,85};
第一个元素为scores[0],下标为0;第五个元素为scores[4],
下标为5
数组的长度是可用length属性获得,比如scores.length
二维数组
类型标识符[][] 数组名或者类型标识符 数组名[][]
初始化也和一维数组类似,给出两对方括号和维的长度。
比如 int[][] stuscores=new int[20][3],这样就创建了行为
20,列为3的一个二维数组
二维数组的初始化:
int [][] tests={ {56,68,62},{66,75,87},{69,89,100}};
数组的长度也是可用length属性获得,比如scores.length
对象框架集
Java的集合框架分为两大类:map和collection
Collection是一种接口,这个接口还有两个子接口List和set。
List接口会按照插入的顺序保存对象元素;Set是无序的,并且不会有重复元素(相同元素会被覆盖)
Map:是一种接口,用于存储一系列“键值对”的对象。
List:此接口会按照插入的顺序保存元素,这个接口下最常用的实现类是ArrayList
建立一个pojo类
publicclassStudent{
private String name;
private String sex;
privateintage;
public String getName() {
returnname;
}
publicvoid setName(String name) {
this.name = name;
}
public String getSex() {
returnsex;
}
publicvoid setSex(String sex) {
this.sex = sex;
}
publicint getAge() {
returnage;
}
publicvoid setAge(int age) {
this.age = age;
}
}
List的用法:
publicclass TestMain {
publicstaticvoid main(String[] args) {
Studentstu=new Student();
stu.setName("小明");
stu.setSex("男");
stu.setAge(25);
Studentstu1=new Student();
stu1.setName("小红");
stu1.setSex("女");
stu1.setAge(23);
ArrayList<Student> list=new ArrayList<Student>();
list.add(stu);
list.add(stu1);
System.out.println(stu.getName()+" : "+stu.getSex()+" : "+stu.getAge());
System.out.println(stu1.getName()+" : "+stu1.getSex()+" : "+stu1.getAge());
//取得第一个对象信息
System.out.println(list.get(0));
//计算对象的个数
System.out.println(list.size());
System.out.println("普通for循环:");
for(int i=0;i<list.size();i++){
Studentstu2=list.get(i);
System.out.println(stu2.getName());
}
System.out.println("加强版for循环:");
for(Student stu3:list){
System.out.println(stu3.getName());
}
}
控制台输出结果:
小明 : 男 : 25
小红 : 女 : 23
MapCollection.Student@61de33
2
普通for循环:
小明
小红
加强版for循环:
小明
小红
List常用API
list.addAll()增加本程序所有元素
list.isEmpty()是否为空是为True否为False
list.clear()清空所有数据
list.contains()是否包含是为True否为False
list.indexOf()返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 False。
import java.util.ArrayList;
import java.util.List;
public class TestMain2 {
public static voidmain(String[] args) {
ArrayList<Student>list=new ArrayList<Student>();
for(int i=0;i<5;i++){
list.add(newStudent("afei"+i));
}
for(inti=0;i<list.size();i++){
Studentstu=list.get(i);
System.out.println(stu.getName());
}
for(Student stu:list){
System.out.println(stu.getName());
}
Student[] stus=newStudent[20];
for(Student stu:stus){
System.out.println(stu);
}
System.out.println("--------------");
List<Student>list1=new ArrayList<Student>();
list1.addAll(list);
for(inti=0;i<list1.size();i++){
System.out.println(list1.get(i));
}
list1.clear();
System.out.println("清除之后");
booleanisempt=list1.isEmpty();
System.out.println("list1是否为空?"+isempt);
list1.add(null);
booleaniscon=list1.contains(null);
System.out.println("iscon:"+iscon);
List<Integer>list3=new ArrayList<Integer>();
list3.add(4);
list3.add(8);
Student s1=newStudent();
Student s2=newStudent();
System.out.println("两个对象是否相等"+(s1==s2));
// System.out.println(list3.contains(8));
}
}
Set的用法
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
publicclass TestMain2 {
publicstaticvoid main(String[] args) {
Set<Student>set2=new HashSet<Student>();
Studentstu=new Student();
stu.setName("哈哈");
stu.setSex("屌丝");
stu.setAge(22);
set2.add(stu);
for(Student stu1:set2){
System.out.println(stu.getSex());
}
// 无序性
Set<Integer>set=new HashSet<Integer>();
set.add(11);
set.add(9);
set.add(5);
set.add(6);
set.add(10);
set.add(9);
set.add(10);
for(int i:set){
System.out.println(i);
}
System.out.println(set.size());
System.out.println("========================");
// 有序的排列
Set<Integer>set1=new TreeSet<Integer>();
set1.add(11);
set1.add(9);
set1.add(5);
set1.add(6);
set1.add(10);
set1.add(9);
set1.add(10);
for(int i1:set1){
System.out.println(i1);
}
}
}
Map 是一个键值对的结构,我们可以通过键来查找值。
import java.util.HashMap;
import java.util.Map;
publicclass TestMain3 {
publicstaticvoid main(String[] args) {
Studentstu=new Student();
stu.setName("上海");
Studentstu1=new Student();
stu1.setName("北京");
Studentstu2=new Student();
stu2.setName("青岛");
Studentstu3=new Student();
stu3.setName("即墨");
Map<String,Student>map=new HashMap<String, Student>();
map.put("shanghai", stu);
map.put("beijing", stu1);
map.put("qingdao", stu2);
map.put("qingdao", stu3);
System.out.println(map.get("shanghai").getName());
System.out.println(map.get("beijing").getName());
System.out.println(map.get("qingdao").getName());
}
}
注意:同样的键会被覆盖
Map不能直接进行for来遍历,想要遍历它,可以先把它转化为Set,然后在做for循环。
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
publicclass TestMain4 {
publicstaticvoid main(String[] args) {
Map<String,String>map=new HashMap<String, String>();
map.put("haha","hehe");
map.put("gaga","gege");
Set<Map.Entry<String,String>>map_set=map.entrySet();
for(Entry<String,String> ent:map_set){
System.out.println(ent.getKey()+" : "+ent.getValue());
}
}
}
其中 Entry是Map接口下的子接口,专用于表示Map结构的键值对。
Iterator迭代器的使用
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import settest.Student;
public class TestMain {
public static voidmain(String[] args) {
List<Student> list= new ArrayList<Student>();
list.add(newStudent("lsp1", 27, 89));
list.add(new Student("lsp2",99, 45));
list.add(newStudent("lsp3", 190, 38));
// for(inti=0;i<list.size();i++){
// Studentstu=list.get(i);
//System.out.println(stu.getName());
// }
// 通过List来创建一个迭代器
Iterator<Student>it = list.iterator();
//forprint(it);
forprint(list);
Set<Student> set =new HashSet<Student>();
set.add(newStudent("lsp4", 434, 90));
set.add(newStudent("lsp5", 323, 12));
set.add(newStudent("lsp6", 9, 47));
// for(Student stu:set){
//System.out.println(stu.getName()+" : "+stu.getScore());
// }
// 通过set来创建一个迭代器
Iterator<Student>set_it = set.iterator();
// forprint(set_it);
forprint(set);
Map<String,String> map = new HashMap<String, String>();
map.put("beijing","北京");
map.put("shanghai","上海");
map.put("wuhan","武汉");
map.put("wuhan","广州");
map.put("wuhan","三峡");
}
public static voidforprint(Iterator<Student> it) {
System.out.println("我在打印日志");
// while(it.hasNext()){
// Studentstu=it.next();
//System.out.println(stu.getName()+" : "+stu.getScore());
// }
while (it.hasNext()) {
Student stu =it.next();
System.out.println(stu.getName()+ " : " + stu.getScore());
}
}
public static voidforprint(Collection<Student> coll) {
System.out.println("我们用的coll");
for (Student stu : coll){
System.out.println(stu.getName()+ " : " + stu.getScore());
}
}
}