数组:
Java 语言中提供的数组是用来存储固定大小的同类型元素。
//声明数组
String[] strings;
//创建数组方式一,5是数组的大小
String[] strings1 = new String[5];
//创建数组方式二,数组的大小是4
String[] strings2 = {"aaa", "bbb", "ccc", "ddd"};
多维数组:
多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组
//二维数组 str 可以看成一个两行三列的数组。
String str[][] = new String[2][3];
java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。
具有以下功能:
1.给数组赋值:通过 fill 方法。
2.对数组排序:通过 sort 方法,按升序。
3.比较数组:通过 equals 方法比较数组中元素值是否相等。
4.查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。
ArrayList和LinkedList
ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦。而LinkedList 采用的将对象存放在独立的空间中,且在每个空间中还保存下一个链接的索引,但是缺点就是查找非常麻烦,需要从第一个索引开始。
① ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
② 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
③ 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
④ArrayList线程是不同步
Vector 类:
向量(Vector)类和传统数组非常相似,但是Vector的大小能根据需要动态的变化。和数组一样,Vector对象的元素也能通过索引访问。使用Vector类最主要的好处就是在创建对象的时候不必给对象指定大小,它的大小会根据需要动态的变化。
Vector类实现了一个动态数组。和ArrayList和相似,但是两者是不同的:
1.Vector是同步访问的。
2.Vector包含了许多传统的方法,这些方法不属于集合框架。
Stack 类
栈是Vector的一个子类,它实现了一个标准的后进先出的栈。
堆栈只定义了默认构造函数,用来创建一个空栈。 堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。
SparseArray和ArrayMap代替HashMap
虽说SparseArray性能比较好,但是由于其添加、查找、删除数据都需要先进行一次二分查找,所以在数据量大的情况下性能并不明显,将降低至少50%。
满足下面两个条件我们可以使用SparseArray代替HashMap:
1.数据量不大,最好在千级以内
2.key必须为int类型,这中情况下的HashMap可以用SparseArray代替:
ArrayMap应用场景
1.数据量不大,最好在千级以内
2.数据结构类型为Map类型
String 类(创建和操作字符串)
String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了。
如果需要对字符串做很多修改,那么应该选择使用 [StringBuffer & StringBuilder 类]
StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象
StringBuilder 具有速度优势,但是不保证线程安全
StringBuffer 线程安全
原因在于实例中的 s 只是一个 String 对象的引用,并不是对象本身,当执行 s = "Runoob"; 创建了一个新的对象 "Runoob",而原来的 "Google" 还存在于内存中。

网友评论