0
点赞
收藏
分享

微信扫一扫

专题:一个自制代码生成器(嵌入式脚本语言)之辅助逻辑

王远洋 03-30 06:30 阅读 3

【有道云笔记】九 3.26 集合框架
https://note.youdao.com/s/TLZg8ip0

一、简介

ArrayList: 有序(放进去顺序和拿出来顺序一致),可重复

HashSet: 无序(放进去顺序和拿出来顺序不一定一致),不可重复

@Test public void test1() { //数组最大问题是长度固定,而且要操作下标 Student[] array = new Student[3]; ArrayList<Student> list = new ArrayList<>(); Student student1 = new Student(); Student student2 = new Student(); Student student3 = new Student(); Student student4 = new Student(); list.add(student1); list.add(student2); list.add(student3); list.add(student4); list.add(student1); //有序可重复 //有序:你放进去的顺序和拿出来的顺序一致 //ArrayList<String> list1 = new ArrayList<>(); List<String> list1 = new ArrayList<>(); list1.add("Java"); list1.add("UI"); list1.add("H5"); list1.add("H5"); list1.add("aa"); for (String s : list1) { System.out.println(s); } System.out.println("-------------------"); //无序不重复 //无序:放进去顺序和拿出来的顺序可能是不一致的 //HashSet<String> set = new HashSet<String>(); Set<String> set = new HashSet<>(); set.add("Java"); set.add("UI"); set.add("H5"); set.add("H5"); set.add("aa"); for (String s : set) { System.out.println(s); } LinkedList linkedList = new LinkedList(); linkedList.addFirst("A"); linkedList.removeFirst(); linkedList.addLast("B"); linkedList.removeLast(); }

二、ArrayList和LinkedList区别

0

ArrayList和LinkedList的大致区别如下:

1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。

2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。

3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

ArrayList内部是使用可増长数组实现的,所以是用get和set方法是花费常数时间的,但是如果插入元素和删除元素,

除非插入和删除的位置都在表末尾,否则代码开销会很大,因为里面需要数组的移动。

LinkedList是使用双链表实现的,所以get会非常消耗资源,除非位置离头部很近。但是插入和删除元素花费常数时间。

jdk1.7版本之前创建集合对象必须把前后的泛型都写上

ArrayList list = new ArrayList();

jdk1.7版本之后,=号后面的泛型可以省略,后面的泛型可以根据前面的泛型推导出来

ArrayList list = new ArrayList<>();

三、队列

Queue先进先出 FIFO Firt In First Out

客服电话、12306排队买票、滴滴打车

0

LinkedList linkedList = new LinkedList(); linkedList.addFirst("A"); linkedList.removeFirst(); linkedList.addLast("B"); linkedList.removeLast();

四、Map

Map key,value

0

Set> set = map.entrySet();

map.keySet();

Map接口

1、Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。

2、Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。

3、Collection中的集合称为单列集合,Map中的集合称为双列集合。

4、需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。

5、Map中常用的集合为HashMap集合、LinkedHashMap集合。

0

Map接口中的常用方法

0

public static void main(String[] args) { // 创建Map对象 Map<String, String> map = new HashMap<String, String>(); // 给map中添加元素 map.put("星期一", "Monday"); map.put("星期日", "Sunday"); System.out.println(map); // {星期日=Sunday, 星期一=Monday} // 根据指定的key获取对应的value String en = map.get("星期日"); System.out.println(en); // Sunday // 根据key删除元素,会返回key对应的value值 String value = map.remove("星期日"); System.out.println(value); // Sunday System.out.println(map); // {星期一=Monday} }

Map集合遍历键找值方式:

一、键找值方式:即通过元素中的键,获取键所对应的值

1.获取Map集合中所有的键,由于键是唯一的,所以返回一个Set集合存储所有的键

0

2.遍历键的Set集合,得到每一个键

3.根据键,获取键所对应的值

0

public void test1() { // 创建Map对象 Map<String, String> map = new HashMap<String, String>(); // 给map中添加元素 map.put("邓超", "孙俪"); map.put("李晨", "范冰冰"); map.put("刘德华", "柳岩"); // 获取Map中的所有key Set<String> keySet = map.keySet(); // 遍历存放所有key的Set集合 Iterator<String> it = keySet.iterator(); while (it.hasNext()) { // 得到每一个key String key = it.next(); // 通过key获取对应的value String value = map.get(key); System.out.println(key + "=" + value); } }

二、Map集合遍历键值对方式

键值对方式:即通过集合中每个键值对(Entry)对象,获取键值对(Entry)对象中的键与值。

操作步骤与图解:

1.获取Map集合中,所有的键值对(Entry)对象,以Set集合形式返回。

0

2.遍历包含键值对(Entry)对象的Set集合,得到每一个键值对(Entry)对象

3.通过键值对(Entry)对象,获取Entry对象中的键与值。

0

0

@Test public void test1() { Map<String, String> map = new HashMap<>(); map.put("cn", "中国"); map.put("us", "美国"); map.put("uk", "英国"); Set<Map.Entry<String, String>> entrySet = map.entrySet(); for (Map.Entry<String, String> entry : entrySet) { System.out.println(entry.getKey() + " : " + entry.getValue()); } System.out.println("-----------"); String country = map.get("cn"); System.out.println(country); System.out.println("-----------"); Set<String> keySet = map.keySet(); for (String key : keySet) { System.out.println(key + " : " + map.get(key)); } } @Test public void test2() { // 创建Map对象 Map<String, String> map = new HashMap<String, String>(); // 给map中添加元素 map.put("邓超", "孙俪"); map.put("李晨", "范冰冰"); map.put("刘德华", "柳岩"); // 获取Map中的所有key与value的对应关系 Set<Map.Entry<String, String>> entrySet = map.entrySet(); // 遍历Set集合 Iterator<Map.Entry<String, String>> it = entrySet.iterator(); while (it.hasNext()) { // 得到每一对对应关系 Map.Entry<String, String> entry = it.next(); // 通过每一对对应关系获取对应的key String key = entry.getKey(); // 通过每一对对应关系获取对应的value String value = entry.getValue(); System.out.println(key + "=" + value); } }

注意:Map集合不能直接使用迭代器或者foreach进行遍历。但是转成Set之后就可以使用了。

举报

相关推荐

0 条评论