集合:集合与数组一样,可以存储多个值,但是不同的是,集合存储不固定数量的数据,集合中的每一个元素的类型可以不同。
泛型:泛型规定了集合中的每一个元素的类型,默认object。如果为集合指定了泛型,那么集合中的每一个元素必须是泛型指定的类型
import java.util.ArrayList;
public class listf {
public static void main(String[] args) {
ArrayList list =new ArrayList();
list.add("qwq");
list.add(99);
// 如上所述,集合中的每一个元素可以不同
ArrayList<String> list1 =new ArrayList<String>();
// <String>用来规定集合中的每一个元素必须为String类型,基本数据类型泛型写封装类
list1.add("qwq");
// list1.add(99); 报错,在泛型指定类型后,每一个元素必须是String
}
链表:是一种有序的列表列表,链表的内容通常存储在内存中分散的位置上。
链表的两种方式:1.利用数组结构串联的有序列表,比如:两个数组,一个放数据,一个放数据的关系。2.一种是以动态内存配置的链表。
栈:堆栈数据结构只允许数据从有序列表的固定端做输出输入操作。stcak继承vector,实现一个后进先出的堆栈。
列队:列队的数据结构规定:在有序列表中的数据的输入输出是分别由不同端进行处理,输出端成为前端,输入端称为后端。
hash:散列,作用是把任意长度的输入通过散列算法变成固定长度的输出,该输出值即为散列值,该转换是一种压缩映射。
set与list集合:
list输出和输入的顺序一致,允许重复;set输出和输入顺序不一致,不容许有重复数据。
public static void main(String[] args) {
HashSet hs = new HashSet();
hs.add("ewe");
hs.add("qwq");
hs.add("ewe");
hs.add("kwk");
System.out.println("set:");
for(Object s : hs) {
System.out.println(s);
}
ArrayList hs1 = new ArrayList();
hs1.add("qwq");
hs1.add("sws");
hs1.add("kwk");
hs1.add("qwq");
System.out.println("list:");
for(Object s : hs1) {
System.out.println(s);
}
}
链表和数组的区别:
链表:内存利用率高,耗内存;查找和修改慢,增加和删除数据快。
数组:内存利用率低,省内存;查找和修改快,增加和删除数据慢。