Java中数组以及集合

java中数组: 数组在Java里是一种特殊类型,有别于普通的“类的实例”的对象。但实际数组也是一种对象类型,int[]a = new int[5]  a是在java栈中分配的引用变量,类型是int[] 数组类型,指向在堆里面地址连续的实际数组对象。

在内存中,数组存储在连续的区域内部,因为数组中每个元素的类型相同,则占用的内存大小也一致,所以在访问数组中的元素时可以直接根据数组在内存中的起始位置以及下标来计算元素的位置,因此数组的访问速度很高。数组必须要初始化才能使用,初始化之后JVM会自动分配默认值,引用变量默认值是null。

数组和集合的区别:

1》数组初始化之后大小固定,无法再改变,集合大小可以改变。

2》同一个数组只能存储同一种数据类型(基本类型/引用类型).集合不考虑泛型可以存储多种数据类型,集合是存储对象的,所以基本类型不能放入集合,可以使用基本类型的包装类型。

3》若程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用。

数组和集合之间进行转化:

toArray():将集合转化为数组。

Arrays.asList():将数组转化为集合.

 

集合的体系结构

List、Set、Map是这个集合体系中最主要的三个接口。 List和Set继承自Collection接口。 Map也属于集合系统,但和Collection接口不同。

 

Set无序,不允许元素重复。HashSet和TreeSet是两个主要的实现类。Set 只能通过游标来取值,并且值是不能重复的。

 

List有序且允许元素重复。ArrayList、LinkedList和Vector是三个主要的实现类。 ArrayList 是线程不安全的, Vector 是线程安全的,这两个类底层都是由数组实现的 LinkedList 是线程不安全的,底层是由链表实现的

 

Map 是键值对集合。其中key列就是一个集合,key不能重复,但是value可以重复。 HashMap、TreeMap和Hashtable是Map的三个主要的实现类。 HashTable 是线程安全的,不能存储 null 值 HashMap 不是线程安全的,可以存储 null 

 

 


 
------------| Collection 单例集合的根接口
----------------| List  如果是实现了List接口的集合类,具备的特点: 有序,可重复。 
-------------------| ArrayList  ArrayList 底层是维护了一个Object数组实现的。 特点: 查询速度快,增删慢。
-------------------| LinkedList LinkedList 底层是使用了链表数据结构实现的, 特点: 查询速度慢,增删快。
-------------------| Vector(了解即可)  底层也是维护了一个Object的数组实现的,实现与ArrayList是一样的,但是Vector是线程安全的,操作效率低。


----------------| Set  如果是实现了Set接口的集合类,具备的特点: 无序,不可重复。
-------------------| HashSet  底层是使用了哈希表来支持的,特点: 存取速度快. 
-------------------| TreeSet   如果元素具备自然顺序 的特性,那么就按照元素自然顺序的特性进行排序存储。

 

Collection接口的方法:

int size();                 boolean isEmpty();              boolean contains(Object o);           Iterator<E> iterator();                Object[] toArray();        boolean add(E e);             boolean remove(Object o);           boolean containsAll(Collection<?> c);       boolean addAll(Collection<? extends E> c);           boolean removeAll(Collection<?> c);         

void clear();

 

http://blog.youkuaiyun.com/qq_33642117/article/details/52040345        set的讲解

http://blog.youkuaiyun.com/qq_33642117/article/details/52049764        map的讲解

Java编程里,数组集合都是用于存储和管理一组数据的数据结构,但它们既有联系又有区别。 数组集合存在一定的关联,它们都可用于存储多个元素。并且在实际编程中,数组集合之间可以相互转换。例如,可以将数组的元素添加到集合中,也能把集合中的元素存储到数组里。 二者也存在明显的区别。数组的长度是固定的,一旦创建就无法改变其容量;而集合的长度是可变的,能根据需求动态扩展容量,还提供了更多成员方法以满足更多需求[^2]。 在使用场景上,数组适合处理元素数量固定且对性能要求较高的情况。例如,创建并初始化字符串数组`String[] names = {"Alice", "Bob", "Charlie"}`,其长度为3;创建一个长度为 5 的整数数组`int[] arr = new int[5]`,可通过索引添加和获取元素,还能使用`arr.length`获取数组长度[^5]。集合则更适用于元素数量不确定,需要频繁进行插入、删除操作的场景。像List集合,存放的对象有序且可重复,关注索引,有一系列和索引相关的方法,查询速度快,但插入和删除数据时会伴随后面数据的移动,所以插入删除速度慢[^4]。 集合还有多种具体类型,Collection代表单列集合,包含List和Set接口。List接口按元素进入顺序排序,元素可重复,其实现类有ArrayList(数组实现,线程不安全)、LinkedList(链表实现,线程不安全)、Vector(数组实现,线程安全);Set接口元素不可重复,实现类有HashSet(数组实现)、TreeSet(二叉树实现,元素自动排序)。Map代表双列集合(键值对),实现类有HashMap(数组加链表实现,线程不安全)、Hashtable(线程安全)、ListedhashMap(key有序)、TreeMap(红黑树实现对所有key排序)[^3]。 ```java import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ArrayAndCollection { public static void main(String[] args) { // 数组集合 String[] names = {"Alice", "Bob", "Charlie"}; List<String> nameList = new ArrayList<>(Arrays.asList(names)); // 集合数组 List<Integer> numberList = new ArrayList<>(); numberList.add(1); numberList.add(2); numberList.add(3); Integer[] numberArray = numberList.toArray(new Integer[0]); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值