List
List:数据是有顺序的(添加的先后顺序)的,数组是可以重复的。
ArrayList:内部结构是数组,比较适合做高频率的查找遍历。线程异步的不安全。
LinkList:双向链表。比较适合做高频率的新增和删除。
Vector:和ArrayList几乎一摸一样,线程同步的安全。
面试题:
1.collection和map接口的区别:存储单值,存储复值
2.ArrayList和LinkedList的区别
3.ArrayList和Vector的区别
public static void main(String[] args) {
//List<String> list=new LinkedList<>();
LinkedList<String> list=new LinkedList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
//我们在创建对象的时候是多态
//父类对象指向子类引用
//我们创建出来的对象只能够调用父类和子类中都有的方法
list.addFirst("z");
//根据下标索引获取指定位置的元素
String z = list.get(list.indexOf("z"));
System.out.println(z);
System.out.println(list);
}
Set
List:有顺序,元素一颗重复,顺序值得是添加的先后顺序
Set(二叉树加链表):无序,没有顺序,元素不可以重复,顺序指的是添加的先后顺序
Set集合其实是有顺序的,内部有一个专门排序的算法。
1.所谓的无序不等于随机
2.所谓的无序指的是没有按照添加的先后顺序,其实内部是做了排序的。
public static void main(String[] args) {
Set<Integer> set=new HashSet<>();
set.add(1);
set.add(3);
set.add(4);
set.add(5);
set.add(1);
System.out.println(set);
}
面试题:
1.List和Set的区别
2.HashSet和LinkedHashSet(链表)的区别和联系?