集合框架总结

目录

一.List集合

1.1ArrayList

1.2LinkedList

二.Set

2.1hashSet 

三.Map


一.List集合

.有序

.有索引

.可重复

1.1ArrayList

1.语法

public class ArrayListed { 
   public static void main(String[] args) {
     List<Integer> arrayList=new ArrayList(); 
     arrayList.add(1); 
     System.out.println(arrayList.get(0)); 
} }

2.常用方法

方法描述
add(Object o)添加数据
add(int index,Object o)在制定索引处添加元素
size()获取元素个数
get(int index)获取索引处的元素
isEmpty()判断集合是否为空
indexOf(Object o)判断某个元素第一次出现的位置
E remove(int index)移除索引处元素,并返回该元素
boolean remove(Object o)移除元素
clear()清空元素
set(int index ,E e)修改索引处的元素
iterator()获取迭代器
trimToSize()减少容量指当前元素个数
contains(Object o)判断是否包含某个元素
lastIndexOf(Object o)判断某个元素最后一次出现的位置
toArray()将集合转换为数组
addAll(Collection<? extends E> c)集合中添加集合
addAll(int index, Collection<? extends E> c)索引处添加集合
retainAll(Collection c)求两个集合的交集
removeAll(Collection<?> c)移除传入集合内的元素
subList(int fromIndex, int toIndex)获取子集合

3.ArrayList遍历:

public class ArrayListed {
    public static void main(String[] args) {
        //定义集合
        List<Integer> arrayList=new ArrayList();
        //向集合中添加元素
        arrayList.add(1);
        arrayList.add(3);
        arrayList.add(5);
        arrayList.add(7);
        //遍历,将arraylist中的数据放入list
        for (Integer list :arrayList) {
            System.out.println(list);
        }
        //使用迭代器遍历
        Iterator it=arrayList.iterator();
        while(it.hasNext())
        {
            int i= (int) it.next();
            System.out.println(i);
        }
    }

}

 4.ArrayList特点

(1)ArrayList底层是数组,所以查找遍历快,增删慢

(2)ArrayList可随着元素的增长而自动扩容,正常扩容到原来的1.5倍

(3)继承List接口(有序,有索引,可重复) 

(4)都是非线程安全

1.2LinkedList

1.语法

 List<Integer> linkedList=new LinkedList<>();

 2.常用方法

方法描述
add(Object o)添加数据
add(int index,Object o)在制定索引处添加元素
size()获取元素个数
get(int index)获取索引处的元素
isEmpty()判断集合是否为空
indexOf(Object o)判断某个元素第一次出现的位置
E remove(int index)移除索引处元素,并返回该元素
boolean remove(Object o)移除元素
clear()清空元素
set(int index ,E e)修改索引处的元素
addFirst(E e)链表首部添加元素
addLast(E e)链表末尾添加元素
removeFirst()移除首节点
removeLast()移除尾节点
getFirst()获取第一个节点
getLast()获取最后一个几点

3.遍历

public static void main(String[] args) {
        //定义集合
        List<Integer> linkedList=new LinkedList<>();
        //向集合中添加元素
        linkedList.add(1);
        linkedList.add(3);
        linkedList.add(5);
        linkedList.add(7);
        //遍历,将arraylist中的数据放入list
        for (Integer list : linkedList) {
            System.out.println(list);
        }
        //使用迭代器遍历
        Iterator it=linkedList.iterator();
        while(it.hasNext())
        {
            int i= (int) it.next();
            System.out.println(i);
        }
    }

4.特点

1)ArrayList底层是双向链表,所以查找遍历慢,增删快 

2)继承List接口(有序,有索引,可重复) 

3)非线程安全

二.Set

.无序

.无索引

.不可重复

2.1hashSet 

提高查询效率 ;数据唯一性 ;存储在散列表中

1.语法

 //定义集合
        Set<String> hashSet= new HashSet<>();

2.方法

方法描述
add(Object o)添加元素
remove(Object o)移除元素
isEmpty()判断元素是否为空

3.遍历

public class Test {
	public static void main(String[] args) {	
		Set<String> set = new HashSet<>();
		//添加元素
		set.add("陈忠实");
		set.add("贾平凹");
		set.add("路遥");
		set.add("张爱玲");
		set.add("林徽因");
		boolean a = set.add("徐志摩");
		System.out.println(a);
		boolean b = set.add("徐志摩");
		System.out.println(b);
		//foreach
		for (String s : set) {
			System.out.println(s);
		}
		//iterator
		Iterator<String> it = set.iterator();
		while (it.hasNext()) {
			String s = it.next();
			System.out.println(s);
		}
	}
}

HashSet集合判断两个元素相等的标准
1.两个对象通过equles()判断比较返回值是true。
2.两个对象hashCode()方法返回值相等。

注意:

若这两个条件有一个不满足,则对象不相等,可以添加成功。如果两个对象的hashCode()方法返回值相等,但是两个对象通过equals()方法比较返回false,HashSet会以链式结构将两个对象保存在同一位置,这将导致性能下降,因此在编码时应避免出现这种情况。 

5.HashSet查找原理:

在查找元素时,HashSet先计算元素的HashCode值(也就是调用对象的hashCode方法的返回值),然后直接到hashCode值对应的位置去取出元素即可,这就是HashSet速度很快的原因。 

三.Map

1.map接口定义

Map接口采用键值对Map<K,V>的存储方式,保存具有映射关系的数据,因此,Map集合里保存两组值,一组值用于保存Map里的key,另外一组值用于保存Map里的value,key和value可以是任意引用类型的数据。

 2.方法

方法描述
put(K key,V value)添加键值对
get(Object key)根据键获取值
keySet()获取keySet
entrySet()获取entrySet
clear()清空
containsKey(Object key)判断是否存在key
remove(Object key)根据key删除键值对
remover(Object key,Object value)根据key和value删除键值对
size()获取元素个数
isEmpty()判断map是否为空

3.遍历

//利用keySet()方法获取keySet
public static void main(String[] args) {
	Map<String,Integer> map = new HashMap<String, Integer>();
	map.put("阿紫",30);
	map.put("梦郎", 20);
	map.put("李秋水", 20);
	map.put("天山童姥", 60);
	map.put("梦姑",18);
	//先获取keySet
	Set<String> set = map.keySet();
	//获取迭代器
	Iterator<String> it = set.iterator();
	//利用迭代器遍历
	while (it.hasNext()) {
		String key = it.next();
		int i = map.get(key);
		System.out.println("key==========="+key);
		System.out.println("value========="+i);
	}
}
//利用entrySet()获取entrySet
public static void main(String[] args) {
	Map<String,Integer> map = new HashMap<String, Integer>();
	map.put("乔峰",30);
	map.put("虚竹", 20);
	map.put("李秋水", 20);
	map.put("天山童姥", 60);
	map.put("梦姑",18);
	//获取键值对集合
	Set<Entry<String, Integer>> set = map.entrySet();
	//遍历set
	for (Entry<String, Integer> entry : set) {
		String key = entry.getKey();
		Integer value = entry.getValue();
		System.out.println("key=========="+key);
		System.out.pintln("key=========="+value);
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值