JAVA基础—07.数组&集合

爱转圈笔记

勤思、体悟、总结、分享

数组&集合

数组(Array)

什么是数组

数组是相同数据类型(任意类型)的有序集合。

数组也是对象,数组成员相当于对象的成员变量。


数组下标

对数组元素进行编号,从0开始,数组中的每个元素都可以通过下标来访问。

数组长度是确定的,不可变的。如果下标越界则会抛出异常。


public class TestArray {
	public static void main(String[] args){
		//数组声明后长度不能改变
		
		//声明数组的方式:
		//1.长度为5的整数型空数组(推荐)
		int[] a1 = new int[5];
		//2.长度为5的整数型空数组
		int a2[] = new int[5];
		//3.长度为5的固定值数组
		int[] a3 = {1,2,5,4,3};
		
		//获取数组的长度
		int len = a1.length;
		
		//将数组a3转换为字符串
		String str = a3.toString();
		
		//为数组a4的第1个元素赋值
		a1[3] = 1;
		
		
		//数组工具类Arrays
		//比较数组a1和a2是否相等(有相同的元素)
		boolean b1 = Arrays.equals(a1, a2);
		
		//将数组a2扩容至长度10,此a2已不再是之前的数组,引用发生了改变
		a2 = Arrays.copyOf(a2, 10);
		
		//对数组a3进行升序排列(从小到大)
		Arrays.sort(a3);
		
		//查询元素val在数组中的下标(要求数组中元素已按照升序排列)。
		int index = Arrays.binarySearch(a1,1);
	}
}

集合/容器(Collection)

什么是集合

集合可以存放不同类型,不限数量的数据对象

集合存放的是数据对象的引用而不是数据对象的本身


集合/容器的分类

  • Collection(接口,存储一组不唯一,无序的对象)
    • List(接口,存储一组不唯一、有序(插入顺序)的对象)
      • ArrayList:实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高
      • LinkedList:采用链表存储方式。插入、修改、删除元素时效率比较高
    • Set(接口存储一组唯一,无序的对象)
      • HashSet:通过哈希值确定元素的位置
    • Map(键值对【Key–Value】,Key是以Set方式进行存储的)
      • HashMap:非线程安全,可以接受null值
      • HashTable:线程安全,不可接受null值

如何遍历集合?

使用iterator(迭代器)或者for循环


import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class TestCollection {
	public static void main(String[] args){
		
		//声明一个ArrayList集合
		//查询速度快
		List<String> arrayList = new ArrayList<String>();
		//向集合中添加元素
		arrayList.add("hello");
		//根据index获取集合中的元素
		String str = arrayList.get(0);
		//判断集合中是否包含某元素
		boolean b = arrayList.contains("hello");
		//查找元素在集合中的位置
		int index = arrayList.indexOf("hello");
		//根据index移除集合中的元素
		arrayList.remove(0);
		//移除集合中的指定元素
		arrayList.remove("hello");
		//清空集合,移除集合中的所有元素
		arrayList.clear();
		//集合的大小
		int listSize = arrayList.size();
		
		//遍历集合方式一,获取集合的迭代器(推荐使用)
		Iterator<String> ita = arrayList.iterator();
		while(ita.hasNext()){
			//获取迭代器中的元素
			String s1 = ita.next();
			System.out.println(s1);
		}
		//遍历集合方式二,for循环
		for (String s2 : arrayList) {
			System.out.println(s2);
		}
		
		
		//声明一个LinkedList集合
		//增删改速度快,使用方法同arrayList
		List<String> linkedList = new LinkedList<String>();
		
		/*------------------------------------------*/		
		
		//声明一个HashSet集合
		Set<String> hashSet = new HashSet<String>();
		//添加元素
		hashSet.add("world");
		//判断元素是否存在
		boolean exist = hashSet.contains("world");
		//移除元素
		hashSet.remove("world");
		//集合的大小
		int setSize = hashSet.size();
		//遍历set集合
		Iterator<String> itaSet = hashSet.iterator();
		while(itaSet.hasNext()){
			//获取迭代器中的元素
			String set = itaSet.next();
			System.out.println(set);
		}
		
		/*------------------------------------------*/		
		
		//声明一个HashMap集合(常用)
		Map<String, Object> hashMap = new HashMap<String, Object>();
		//添加元素(键,值)
		hashMap.put("m1", 1);
		//根据键来移除元素(键值对)
		hashMap.remove("m1");
		//判断是否存在指定键m1
		boolean bmk = hashMap.containsKey("m1");
		//判断是否存在指定值1
		boolean bmv = hashMap.containsValue(1);
		//获取集合中所有键
		Set keys = hashMap.keySet();
		//清空集合
		hashMap.clear();
		//集合的大小
		int mapSize = hashMap.size();
		
		
		//声明一个HashTable集合
		//使用方法同HashMap
		Map<String, Object> hashTable = new Hashtable<String, Object>();
	}
}

猜你喜欢

转载自blog.csdn.net/wyd288/article/details/85477544
今日推荐