容器就是能装对象的对象,在Java中所以集合数据类型(List、Set、Map)都遵循Collection接口。
Java的ArryList等价于Python中的List,它是线性数据结构,相对于Arry数组来说是可变长的。
List向上实现了Collection接口,向下有2个实现类,分别是ArrayList和LinkedList,两者形成优势互补,使用方法一致。
1.ArrayList(列表)
ArrayList的内存是连续的,方便我们查询和遍历,但是不利于修改数据。
package Sets; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class TestList { public static void main(String[] args) { //列表 List arrayList = new ArrayList(); arrayList.add("老北京"); arrayList.add("双胞胎"); arrayList.add("六丁目"); arrayList.add("康师傅"); //[老北京, 双胞胎, 六丁目, 康师傅] System.out.println(arrayList); //链表 List likedList = new LinkedList(); likedList.add("老北京"); likedList.add("双胞胎"); likedList.add("六丁目"); likedList.add("康师傅"); //[老北京, 双胞胎, 六丁目, 康师傅] System.out.println(likedList); } }
2.LinkedList(链表)
链表的内存是不连续的,链表的优势是利于删除和新增数据,但是不利于数据遍历和查询(从头开始找到下一个,在到下一个.....)。
3.常用操作
由于链表和链表实现了同1个接口,所以2者的可以调用的方法是一致的。
package Sets; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class TestList { public static void main(String[] args) { //列表 //添加元素 List list = new ArrayList(); list.add("老北京"); list.add("双胞胎"); list.add("六丁目"); list.add("康师傅"); list.add(1); //[老北京, 双胞胎, 六丁目, 康师傅] System.out.println(list); //删除元素 list.remove("康师傅"); System.out.println(list); //查看列表的长度 System.out.println(list.size()); //获取单个值:在list中任何元素都属于Object类型,但是我们使用值时需要强转 Object item2 = list.get(2); System.out.println((String) item2); //向下转型 Object item3 = list.get(3); System.out.println((int) item3); //向下转型 //成员关系判断等价于python中的in System.out.println(list.contains(1)); System.out.println(list.contains("康帅傅")); //变量列表 for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } } }
Set集合等于Python中的set,相较于List来说,在set中没有重复的元素;
package Sets; import java.util.HashSet; import java.util.Set; import java.util.TreeSet; public class TestSet { public static void main(String[] args) { Set set = new HashSet(); set.add("CS"); set.add("DNF"); set.add("LOL"); set.add("CS"); //Set天然去重,重复的数据是添加不进去的 //[CS, LOL, DNF] System.out.println(set); //TreeSet:会自动对集合中元素进行排序,而HashSet不会。 Set treeSet = new TreeSet(); treeSet.add(10); treeSet.add(102); treeSet.add(200); //[10, 102, 200] System.out.println(treeSet); } }
1.HashSet
元素不重复并且是无序的;
2.TreeSet
元素不重复的,TreeSet会自动会内部的元素进行排序;
3.常用方法
Map相当于Python中的dict字典,存储key和value的值。
参考