数组Array的整理:
package com.company;
//===============================数组===========================================
/*
数组:
一种容器,可以同时存放多个数据值
是引用类型
数组中的多个数据,类型必须统一
数组长度在程序运行期间不可改变
声明数组:
double[] a; //声明数组a(首选的声明方法)
double a[]; //声明数组a(风格是来自 C/C++ 语言,不是首选方法)
创建数组:
动态初始化数组:
double[] myList = new double[5] //创建一个可以存5个double类型的数据的myList数组,其实是myList在堆中创建了,new double[5]在
栈中创建,然后new double[5]在栈中创建地址给myList
可拆分:double[] myList;
myList = new double[5];
静态初始化数组:
double[] myList = {1.9, 2.9, 3.4, 3.5} //创建一个有1.9,2.9等数据的myLIst数组
double[] myList = new double[] {1.9, 2.9, 3.4, 3.5} //创建一个有1.9,2.9等数据的myLIst数组
可拆分:double[] myList;
myList = new double[] {1.9, 2.9, 3.4, 3.5};
获取数组中某个值:
myList[0] //索引从0开始
一个数组等于另一个数组,这个数组是指向那个数组的地址:
数组err2等于err1,即err2和err1是指向同一个地址,不管修改了谁,另一个都会跟着变化
public static void main(String[] args){
int[] arr1 = new int[3];
arr1[1] = 3;
System.out.println(arr1[1]);
int[] arr2 = arr1;
System.out.println(arr2[1]);
arr2[1] = 30;
System.out.println(arr2[1]);
System.out.println(arr1[1]);
}
数组案例:
double[] myList = new double[size]
double[] myList = {1.9, 2.9, 3.4, 3.5};
// 数组大小
int size = 10;
// 定义数组myList
double[] myList = new double[size]; //给double[size]创建一个数组,等价于double[] myList = {1.9, 2.9, 3.4, 3.5};
//给数组赋值
myList[0] = 5.6;
myList[1] = 4.5;
myList[2] = 3.3;
myList[3] = 13.2;
myList[4] = 4.0;
myList[5] = 34.33;
myList[6] = 34.0;
myList[7] = 45.45;
myList[8] = 99.993;
myList[9] = 11123;
// 计算所有元素的总和
double total = 0;
for (int i = 0; i < size; i++) {
total += myList[i];
}
System.out.println("总和为: " + total); //总和为: 11367.373
数组在初始化时,会为存储空间添加默认值:
整数:0
浮点数:0.0
布尔值:false
字符:空字符
引用数据类型:null
public static void main(String[] args){
//数字 输出 0 0 0
int[] arr = new int[3];
for (Integer i: arr
) {
System.out.println(i);
}
//字符 输出
char[] Str = new char[3];
for (char i: Str
) {
System.out.println(i);
}
}
处理数组:
数组的元素类型和数组大小都是确定的,所以处理数组元素时候,通常使用基本循环或者 For-Each 循环
double[] myList = {1.9, 2.9, 3.4, 3.5};
// 打印所有数组元素
for (int i = 0; i < myList.length; i++) {
System.out.println(myList[i] + " ");
}
// 计算所有元素的总和
double total = 0;
for (int i = 0; i < myList.length; i++) {
total += myList[i];
}
System.out.println("Total is " + total);
// 查找最大元素
double max = myList[0];
for (int i = 1; i < myList.length; i++) {
if (myList[i] > max) max = myList[i];
}
System.out.println("Max is " + max);
for-each循环处理数组:
double[] myList = {1.9, 2.9, 3.4, 3.5};
// 打印所有数组元素
for (double element: myList) { //数组的每个元素为element
System.out.println(element);
}
多维数组:
可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组
String[][] str = new String[3][4]; //二维数组str String可以是基本数据类型,复合数据类型,3和4必须是正整数,3是行数,4是列数
从最高维开始,分别为每一维分配空间:
String[][] s = new String[2][];
s[0] = new String[2]; //为最高维分配引用空间
s[1] = new String[3];
s[0][0] = new String("Good"); //再为其每个数组元素单独分配空间
s[0][1] = new String("Luck");
s[1][0] = new String("to");
s[1][1] = new String("you");
s[1][2] = new String("!");
取二维数组每个元素:
num[1][0];
Arrays类:
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的
给数组赋值:通过 fill 方法。
对数组排序:通过 sort 方法,按升序。
比较数组:通过 equals 方法比较数组中元素值是否相等。
查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。
*/
public class Arraya {
}
ArrayList的整理:
package com.company;
//===============================ArrayLista===========================================
/*
ArrayList 类:
是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素
引入 ArrayList 类:
import java.util.ArrayList;
初始化:
ArrayList<E> objectName =new ArrayList<>(); //E: 泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型。 objectName: 对象名。
List<E> objectName = new ArrayList<>(); //多态写法,List是ArrayList的父类
ArrayList 是一个数组队列,提供了相关的添加、删除、修改、遍历等功能
添加add() 访问get() 修改set() 删除remove() 计算元素数量size() 迭代数组列表中的元素for()或for-each():
import java.util.ArrayList; //引入 ArrayList 类:
public class RunoobTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>(); //初始化ArrayList的sites
sites.add("Google"); //给sites对象 添加 数据
sites.add(1,"abc"); //给sites对象 的第1个索引添加 数据 (索引从0开始)
sites.add("Runoob");
sites.add("Taobao");
sites.add("Weibo");
System.out.println(sites);
System.out.println(sites.get(1)); // 访问第二个元素
sites.set(2, "Wiki"); // 第一个参数为索引位置,第二个为要修改的值
sites.remove(3); // 删除第四个元素
sites.remove("abc"); // 删除 对象中的 abc 元素
System.out.println(sites.size()); //计算元素数量
for (int i = 0; i < sites.size(); i++) { // for 来迭代数组列表中的元素
System.out.println(sites.get(i));
}
for (String i : sites) { // for-each 来迭代数组列表中的元素
System.out.println(i);
}
}
}
ArrayList<Integer> li=new Arraylist<>(); // 存放整数元素
ArrayList<Character> li=new Arraylist<>(); // 存放字符元素
基本类型 引用类型
boolean Boolean
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
ArrayList 排序:
Collections 类也是一个非常有用的类,位于 java.util 包中,提供的 sort() 方法可以对字符或数字列表进行排序。
import java.util.ArrayList;
import java.util.Collections; // 引入 Collections 类
public class RunoobTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Taobao");
sites.add("Wiki");
sites.add("Runoob");
sites.add("Weibo");
sites.add("Google");
Collections.sort(sites); // 字母排序
for (String i : sites) {
System.out.println(i);
}
}
}
*/
public class ArrayLista {
}
集合:
集合类型主要有3种:set(集)、list(列表)和map(映射)。
Collection集合:
List集合:
Iterator迭代器和for循环遍历集合:
ListLterator列表迭代器遍历集合:
增强for循环遍历集合:
栈与队列:
数组:
链表:
List集合的子类ArrayList与LinkedList:
Set集合:
哈希值:
HashSet集合:
LinkedHashSet集合:
TreeSet集合:
Map集合:
Map集合的遍历1:
Map集合的遍历2:
HashMap集合的创建,遍历:
加强:
ArrayList集合嵌套HashMap集合的创建与遍历:
HashMap集合嵌套ArrayList集合的创建与遍历:
Collections类(Collection集合区分好):