集合 Collection list set map

 数组和集合的区别

 

 数组:可以存放基本类型数据以及引用类型数据,他是定长的,访问比较快,但是不会自动扩充

 集合:他只能存放引用数据类型,长度不固定,可自动扩充,开发常用

 Collection 单列集合的父接口

 set:无序,不重复

 list:有序,可重复的

 无序:元素在存时候的顺序和他存进去的顺序是不一致的(这不一定是绝对的)

 有序;录入元素顺序和输出数据顺序相同

set集合 

1.hashset 集合

1.创建hashset对象   Collection c = new HashSet();

2.c.add("元素"); 向集合中添加元素

3.c.addAll(c2); 集合中加入另外一个集合对象

4.c.size() 获取集合长度

5.c.isEmpty() 判断集合是否为空

6.c.contains("元素") 判断接种是否包含某个元素

7.c.toArray(); 将集合转换为数组对象 因为无法确定集合是什么类型时 使用object 

         Object [] obj =  c.toArray();

8.c.remove("元素"); 从集合中删除某个对象

9.c.remove(集合名); 清空某个集合

10.c.containsAll(c2);判断集合中是否包含某个集合

11.c.retainAll(c2);求两个集合中的交集

12.c.clear();清空集合

​​​​​​​2.set集合​​​​​​​

 1.创建set集合对象   Collection set = new HashSet();

2.通过foreach遍历 

		for(Object s : set) {
			System.out.println(s);
		}
		

list集合

1.list对象

1.创建list对象 List c = new ArrayList();

2.c.add("元素"); 向集合中添加元素

3.c.add(下标,"元素"); 在列表中的指定下标位置,添加指定元素

4.c.get(2);返回指定下标位置的元素

5.c.indexOf("元素")在集合中查询元素的索引 如果不存在返回-1 

6.c.remove(下标); 根据下标从集合中删除某个对象

7.c.set(要修改的元素下标,"想修改成的内容");用指定元素替换指定列表中的元素(修改)

2.arraylist对象

1.创建arraylist对象 ArrayList list = new ArrayList();

2.制定初始容量创建arraylist对象 没有默认值 ArrayList list2 = new ArrayList(10);

3.制定初始集合对象 ArrayList list3 = new ArrayList(已有arraylist对象名);

3.linkedlist对象

1.创建linkedlist对象 ArrayList list = new Linkedlist();

2.制定初始集合对象 Linkedlist list3 = new Linkedlist(已有Linkedlist对象名);

3.list6.addFirst("字符串"); 将给定元素插入此列表的开头

4.list6.getFirst() 获取第一个元素

5. list6.removeFirst(); 移除并返回此列表的第一个元素

ArrayList和LinkedList的区别

 存储结构

 ArrayList是线性顺序存储

 LinkedList对象间彼此串联起来的一个链表

 操作性能

 ArrayList适合随机查询的场合

 LinkedList元素的插入和删除操作性高

 从功能上:LinkedList要多一些

集合遍历

迭代器 迭代集合(遍历)

1.list的迭代器有两种 iterator  listiterator

2.set的迭代器只有itetator

迭代器的方法:

1.创建迭代器  Iterator 迭代器名 = 集合名 . iterator();

2.迭代器名 . hasNext() 判断是否有下一个元素

3.迭代器名 . next() 获取下一个元素

 list可以通过 for foreach iterator listiterator来进行遍历

 set可以通过foreach 和 itetator来进行遍历

list遍历:

		List c = new ArrayList();
		c.add("小A");
		c.add("小B");
		c.add("小C");
		c.add("小D");
		c.add("小E");
		
//for循环遍历
		for (int i = 0;i<c.size();i++) {
			System.out.print(c.get(i));
		}
//foreach遍历
		for(Object ob : c) {
			System.out.print(ob);
		}
//迭代器Iterator遍历
		Iterator it = c.iterator();
		while(it.hasNext()) {
			System.out.print(it.next());
		}
//迭代器ListIterator遍历
		ListIterator it2 = c.listIterator();
		while(it2.hasNext()) {
			System.out.print(it2.next());
		}

set遍历:

//通过foreach遍历
		for(Object s : set) {
			System.out.println("姓名:"+s);
		}
//通过迭代器Iterator遍历
		Iterator it = c.iterator();
		while(it.hasNext()) {
			System.out.println(it.next());
		}

collections中的的方法

1. Collections.max(集合名,null) 寻找集合中的最大值 没传递第二个参数表示默认自然排序

2.Collections.reverse(集合名); 把集合中的元素反转

3.Collections.copy(list, list2);list2中的元素存入list中 会覆盖 原集合长度要小于目标集合 后面的要小于前面的

4.Collections.fill(集合名 ,"指定元素");  用指定元素填充满集合

5.Collections.sort(集合名); 排序升序 小在前大在后

6.Collections.binarySearch(集合名, "查找元素");对排序后的集合进行查找 返回值为其下标

map集合

Map:双列结合(接口)

map是以键值对方式存储的,键具备唯一性,不能重复,值可重复

HashMap与Treemap的比较(面试题)

 HashMap基于哈希表实现

 TreeMap基于树实现,

 HashMap可以通过调初始容量和负载因子,优化HashMap空间的实用

 TreeMap没有调优选项,因为该树总处于平衡状态

  HashMap性能优于TreeMap

1.map的方法

1. (1)创建map对象  Map map = new HashMap(); 

   (2)创建hashmap对象  HashMap map3 = new HashMap();

                1.指定初始容量定义map对象  HashMap map4 = new HashMap(长度);

                2.指定初始容量定义map对象 指定加载因子 默认加载因子的值为0.75

                HashMap map5 = new HashMap(长度,0.75f);

2.添加元素 map.put("键", "值");

3.将一个指定集合中内容复制到另外一个集合 map2.putAll(map); map2复制了map

4.根据键取其相对应的值 map.get("键"); 

5.根据指定键移除键值对 map.containsKey("键");

6.判断是否包含该值 map.containsValue("值"); 输出结果为布尔类型

7.返回的是集合的长度 map.size() 

8.判断集合是否是空的 map.isEmpty()

9.获取所有的键 Set keyset =  map.keySet();

10.遍历集合

		for (Object key : keyset) {
			//根据键找值
			Object value = map.get(key);
			System.out.println(key + "--"+value);
		}

11.清空集合 map.clear();

2.map泛型

集合中元素类型不一致,在遍历的时候容易出现类型转换异常,所以可以在定义的时候使用泛型

<>钻石符号 是泛型的一种表现方式

HashMap<int, Student> map = new HashMap<int, Student>();

//表示键为int类型 值为student类类型

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值