Java学习笔记8-集合

一、简介

      集合是指具有某种特定性质的具体的或抽象的对象汇总而成的集体。其中,构成集合的这些对象则称为该集合的元素。即:一个或多个确定元素所构成的整体。

二、作用

存储对象的容器,将容器添加标签,使其只能存储某种对象类型。

三、特点

  • 只能用来存放对象;
  • 存放的是对对象的引用;
  • 可以存放不同类型,不限数量的数据类型;

四、集合和数组区别

长度区别:

  • 数组固定
  • 集合可变

内容区别:

  • 数组可以是基本数据类型,也可是引用数据类型
  • 集合是引用数据类型

元素内容:

  • 数组只能存储同一种类型
  • 集合可以存储不同类型

五、分类(依据实现的接口)

在这里插入图片描述
小结:

  • Set:无序、不可重复集合;
  • List:有序、可重复集合;
  • Map:键值对映射,键唯一,值不唯一;

六、类型详解

set

1、简介
      set元素保证元素唯一性依赖equal()和hashCode()两个方法,在创建的元素中没有重写这两个方法时,没人调用的是Object类中的这两个方法,而object() 方法默认比较的是地址值是否相等。
2、特点
特点:无序、不可重复集合;
3、分类
HashSet 、TreeSet 、 LeakedHashSet
4、类型

HashSet
(1)特点:

  • 调用hashCode()查看有相同的哈希值,
  • 调用equals()与放入新元素比较,去重(底层哈希算法实现,效率高)

(2)用法

  • 创建集合对象(List是接口,通过创建子类对象完成接口的实例化),Set set=new HashSet()
  • 创建元素对象
  • 向集合中添加元素,add()
  • 循环遍历集合并输出

(3)遍历

  • 普通for循环
  • 增强for循环
  • 迭代器
public class Hast {
	public static void main(String[] args) {
//		Set set=new HashSet();//另一种调用集合方法
//		set.add("as");
//		set.add(12);
//		System.out.println(set);
		Set<Object> set1=new HashSet<Object>();//object为所有类的父类,就是说set里面可以添加任何类型元素
		set1.add(12);
		set1.add(21);
		set1.add("ss");//添加元素
		System.out.println(set1);
		set1.remove(12);//移除元素,显示剩余元素
		System.out.println(set1);
		System.out.println(set1.contains(12));//判断集合是否包含该元素
		set1.add(true);
		int ss=set1.size();//显示集合中有多少元素
		System.out.println(ss);
		Iterator sl=set1.iterator();//使用迭代器遍历集合
		while (sl.hasNext()) {
			System.out.println(sl.next());	
		}
		//for each迭代数据
		for (Object obj : set1) {//把set的每一个数据取出来赋值给obj,直到循环结束
		System.out.println(obj);
		}
		
		
		Set<String> set2=new HashSet<String>();//指定集合中只能放string数据类型
		set2.add("s1");
		set2.clear();//清空集合
		set2.add("s2");
		System.out.println(set2);
		
	}

}

TreeSet
特点:元素自动升序排列(底层二叉树实现)

public class Tset {
	public static void main(String[] args) {
		Set<Object> ss=new TreeSet<Object>();
		ss.add("a");
		ss.add("c");
		ss.add("a");
		ss.add("s");
		ss.add("o");
		System.out.println(ss);//按照自然排序
		
		
		Set<Integer> ss1=new  TreeSet<Integer>();
		ss1.add(2);
		ss1.add(1);
		ss1.add(4);
		ss1.add(3);
		for (Integer i:ss1) {
			System.out.println(i);
		}
	}
}
List

1、特征
特征:有序、可重复的集合
2、分类
ArrayList、LinkedList、Vector
3、类型
ArrayList
(1)特点:底层动态数组,查询快,增删慢(同数组),线程不安全,效率高。

(2)用法

  • 创建集合对象(List是接口,通过创建子类对象完成接口的实例化),List list=new ArrayList()
  • 创建元素对象
  • 向集合中添加元素,add()
  • 循环遍历集合并输出;迭代器迭代时必须通过调用列表迭代器的方法来实现。
public class ALise {
	public static void main(String[] args) {
		List<String> list=new ArrayList<String>();//指定插入集合类型为string
		list.add("d");
		list.add("e");//list允许元素重复
		list.add("a");
		list.add("d");
		list.add("q");
		list.add("k");
		System.out.println(list);
		System.out.println(list.get(2));//通过索引下标来访问指定位置元素
		
		list.add(0,"e");//在指定索引下标位置插入数据
		System.out.println(list);
		System.out.println(list.indexOf("d"));//获取指定元素在集合中第一次出现的索引下标
		System.out.println(list.lastIndexOf("d"));//获取指定元素在集合中最后一次出现的索引下标
		list.set(1, "w");//根据指定的索引下标修改元素
		List<String> seList=list.subList(1, 4);取索引下标在大于等于2小于4的元素
		System.out.println(seList);
		System.out.println(list.size());
	}
}

LinkedList
特点:底层是链接,查询慢,增删快,线程不安全,效率高。
Vector
特点:查询快,增删慢,线程安全,效率低。

Map

1、作用:用于具有映射关系的数据

2、分类:HashMap、Hashtable、TreeMap

3、类型
HashMap
(1)特点:底层是哈希算发,针对键

(2)用法

  • 创建集合对象,Map<Interger,Object> map=new HashMap<>();
  • 创建元素对象
  • 向集合中添加元素,put()
  • 循环遍历集合并输出:1.获取所有元素的key:keySet();2.遍历keySet:iterator();3.通过key获取value:get()。

TreeMap
特点:底层是二叉树算法,针对键

public class Test6 {
	public static void main(String[] args) {
		Map<String, Integer> map = new HashMap<String, Integer>();
		map.put("b", 1);//添加数据
		map.put("c", 2);
		map.put("e", 2);
		System.out.println(map);
		
		System.out.println(map.get("b"));//根据key取值
		
		map.remove("c");//根据key移除键值对
		System.out.println(map);
//		
		System.out.println(map.size());//map集合的长度
		
		System.out.println(map.containsKey("a"));//判断当前的map集合是否包含指定的key
		
		System.out.println(map.containsValue(10));//判断当前的map集合是否包含指定的value
		
//		map.clear();//清空集合
		
		Set<String> keys = map.keySet();//获取map集合的key的集合
		
		map.values();//获取集合的所有value值
		
		//遍历map集合,通过map.keySet();
		for(String key : keys){
			System.out.println("key: " + key + ", value: " + map.get(key));
		}
		
		//通过map.entrySet();遍历map集合
		Set<Entry<String, Integer>> entrys = map.entrySet();
		for(Entry<String, Integer> en : entrys){			System.out.println("key: " + en.getKey() + ", value: " + en.getValue());
		}
		
		//TreeMap的自然排序是字典排序
		Map<Integer,String> map1 = new TreeMap<Integer, String>();
		map1.put(4, "a");
		map1.put(2, "a");
		map1.put(3, "a");
		map1.put(1, "a");
		
		System.out.println(map1);
		
		Map<String,String> map2 = new TreeMap<String, String>();
		map2.put("b", "b");
		map2.put("c", "c");
		map2.put("d", "d");
		map2.put("a", "a");
		map2.put("ab", "ab");
		map2.put("1", "ab");
		map2.put("10", "ab");
		
		System.out.println(map2);
		
	}
}

七、工具类

1、作用
操作Set、List、Map,对其进行排序、查询、修改等操作;还提供了对集合对象设置不可变、对集合对象实现同步控制等方法;
2、常用成员方法

函数作用
reverse(List)反转集合中元素的顺序
shuffle(List)对集合元素进行随机排序
sort(List)升序排列
sort(List,Comparator)根据指定的Comparator产生的顺序对集合进行排序
swap(List, int , int)指定集合的i处元素与j处元素进行交换
Object max(Collection)根据元素的自然顺序,返回给定集合中的最大元素
Object max(Collection,Comparator)根据 Comparator 指定的顺序,返回给定集合中的最大元素
Object min(Collection)返回给定集合中的最小元素
Object min(Collection,Comparator)根据 Comparator 指定的顺序,返回给定集合中的最小元素
int frequency(Collection,Object)返回指定集合中指定元素的出现次数
boolean replaceAll(List list,Object oldVal,Object newVal)使用新值替换 List 对象的所有旧值
public class Test7 {
	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		list.add("b");
		list.add("cd");
		list.add("ca");
		list.add("a");
		list.add("a");
		list.add("1");
		
		System.out.println(list);
		
		Collections.reverse(list);//反转 List 中元素的顺序
		System.out.println(list);
		
		Collections.shuffle(list);//对 List 集合元素进行随机排序
		System.out.println(list);
//		
		Collections.sort(list);//list集合字典升序排序
		System.out.println(list);
		
		System.out.println(Collections.frequency(list, "x"));//返回指定集合中指定元素的出现次数
		
		Collections.replaceAll(list, "b", "bb");//使用新值替换 List 对象的所有旧值
		
		System.out.println(list);
		
		Collections.swap(list, 0, 4);//将指定 list 集合中的 i 处元素和 j 处元素进行交换
		System.out.println(list);
		
		System.out.println(Collections.max(list));//list中最大值
		System.out.println(Collections.min(list));//list中最小值
		
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值