集合内容简单总结与体现

使用场景:

对于在Java中实现存储对象功能,之前我们已经学习过了“数组”。

public class Test03 {
		public static void main(String[] args) {
		int [] scores = {10,20,30,45,55};
		System.out.println(scores[0]);
		scores[0]=88;
		System.out.println(scores[0]);
		}
}

数组不仅可以存放基本数据类型也可以容纳属于同一种类型的对象。数组的操作是高效率的,但也有缺点。比如数组的长度是不可以变的,数组只能存放同一种类型的对象。

Java集合

于是,为了使程序方便地存储和操纵长度、数目不固定的一组数据,JDK中提供了Java集合类,所有Java集合类都位于Java.util包中。

集合的分类、实现类、特点、方法

Collection 接口

Collection 类是一个接口,定义了集合中最基本的常用方法。

接口中的主要方法:

1---        boolean add(E e);        增加元素

2---        boolean remove(Object obj);        删除元素

3---        boolean contains(Object obj);         包含

4---        boolean is Empty();        是否有元素,空为true,非空是false

5---        void clear();        清空集合中的元素

数组清空 != null;元素虽然清空。但是数组空间还在

6---        int size();        集合中元素的个数

7---        Object[] toArray();        把集合转换成数组

8---        Iterator<E> iterator();        获取迭代器对象

代码显示

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

public class test {
		public static void main(String[] args) {
			Collection<String> c = new ArrayList<>();
			//增加元素
			c.add("张三1");
			c.add("张三2");
			c.add("张三2");
			c.add("张三2");
			c.add("张三3");
			c.add("张三4");
			c.add("张三5");
			System.out.println(c);
			
			//删除元素
			boolean b = c.remove("张三2");
			System.out.println(b);
			System.out.println(c);
			
			//判断集合中有没有元素
			boolean e = c.isEmpty();
			System.out.println(e);
			
			//集合中是否包含某个元素
			boolean d = c.contains("张三wowow");
			System.out.println(d);
			
			//集合中的元素个数
			int i = c.size();
			System.out.println(i);
			
			//集合转成数组
			Object[] array = c.toArray();
			System.out.println("--------"+Arrays.toString(array));
			
			//删除集合中的所有元素
			c.clear();
			System.out.println(c);
			System.out.println(c==null);//false
		}
}

 

Iterator<E>接口

 方法:

E next();        获取元素

boolean hasNext();        判断是否是下一个元素;有元素---true;无元素---false。

注意事项:

a.通过迭代器遍历集合的时候,不能通过“集合对象”进行增删操作

b.迭代器有一个删除方法,可以通过迭代器的删除方法进行删除---void remove(); 获取谁,删除谁

增强for循环

使用增强for循环,进行遍历集合

语法:for(数据类型   变量名:要遍历的集合名字){

}

代码实现Iterator

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class test02 {
		public static void main(String[] args) {
			Collection<String> co = new ArrayList<>();
			co.add("Java-1");
			co.add("Java-2");
			co.add("Java-3");
			co.add("Java-4");
			co.add("Java-5");
			System.out.println(co);
			
		//获取迭代器对象
			Iterator<String> iterator = co.iterator();
			while(iterator.hasNext()) {
				String element = iterator.next();
				System.out.println(element);
				
		//判断某些情况下要新增、删除元素
				if(element.equals("Java-1")) {
					iterator.remove();
				}
			}
			System.out.println(co);
		}
}

 单列集合---List接口下和索引值相关的办法

1---        E get(int index);        获取元素

2---        E remove(int index);        根据索引值删除元素

3---        void add(int index,E e);        把元素添加到对应索引值位置

4---        E set(int index,E e);       替换对应索引值位置的元素,返回被替换的元素

5---        int indexOf(Object obj);     获取参数在集合中的索引值位置,如果元素不存在,则返回 -1

6---        int lastIndexOf(Object obj);        获取参数在集合中最后一次出现的索引值位置,如果元素不存在,则返回 -1

7---        List<E>sublist(int beginIndex,int endIndex);        截取

常用实现类【LinkedList】的成员方法

1---        void addFirst(E e);        把元素添加到头部

2---        void addLast(E e);        把元素添加到尾部

3---        E getFirst();        获取头部位置的元素

4---        E getLast();        获取尾部位置的元素

5---        E removeFirst();        删除头部位置元素

6---        E removeLast();        删除尾部位置元素

List 代码实现

import java.util.ArrayList;
import java.util.List;

public class test {
		public static void main(String[] args) {
			List<String> list = new ArrayList<>();
			list.add("Java==1");
			list.add("Java==2");
			list.add("Java==3");
			list.add("Java==4");
			list.add("Java==5");
			System.out.println(list.size());//输出list集合元素个数
			
			String element = list.get(3);//获取索引值为3的元素
			System.out.println(element);
		}
}

输出: 5 // Java==4 

set接口

set接口没有在 Collection 的基础上扩展功能,Collection的方法就是set方法

实现类

HashSet        去除重复

LinkedHashSet        不能重复,保证顺序

TreeSet<E>        可排序

①TreeSet的泛型必须是Comparable 类型,如果不是该类型,则新增会抛出 classCastException

②如果泛型不是Comparable类型,则需要在TreeSet的构造器中传入一个Comparator类型的对象

TreeSet 新增元素的时候,泛型必须是Comparable类型

构造方法:

public TreeSet();

public TreeSet(comparator<E>C);

Comparable<T>接口

public int compareTo(E,e);

Comparator<E>接口 

int compare(T t1,T t2);

说明要比较的规则:
升序        ---        当前对象—参数对象 

降序        ---        参数对象—当前对象

双列集合---MAP

常用方法:

如果k存在,新v替换旧v,返回被替换的旧v

如果k不存在,则返回null

1        ---        V put(K k,V v);        新增方法

2        ---        V remove(Object key);        根据key删除整个键值对,返回对应的value,如果k不存在,则返回null

3        ---        V get(Object key);        根据key获取v,如果key不存在,则返回null;

4        ---        boolean isEmpty();        判断集合是否为空,为空返回true,不为空返回false

5        ---        void clear();        清空集合中的元素

6        ---        boolean containsKey(Object key);        判断是否包含key

7        ---        boolean containsValue(Object value);        判断是否包含value

8        ---        set<K>keySet();        获取所有的key

9        ---        set<Entry<K,V>> entrySet();        获取所有的entry

10      ---        Collections<V>values();        获取所有的value

11      ---        int size();        元素个数

遍历Map集合方式

方式一:

a.   获取所有的Entry,Set<Entry<k,v>>

b.   遍历Set集合,泛型是Entry

c.    entry.getKey()、entry.getValue();

方式二:

a.  获取所有的key,keySet();返回值Set<K>  

b.   遍历Set集合,泛型是k

c.   获取一个k,根据k获取v 

代码实现

import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;

public class test01 {
		/*
		 * 1.遍历集合,并将序号与对应人名打印。
		2.向该map集合中插入一个编码为5姓名为李晓红的信息
		3.移除该map中的编号为1的信息 
		4.将map集合中编号为2的姓名信息修改为"周林"
		 */
		public static void main(String[] args) {
	HashMap<Integer,String> map = new HashMap<Integer, String>();
		map.put(1,"张三丰");
		map.put(2, "周芷若");
		map.put(3, "汪峰");
		map.put(4, "灭绝师太");
		
		//获取所有的Entry
		Set<Entry<Integer,String>> entrySet = map.entrySet();
		//使用增强for遍历set集合
		for (Entry<Integer, String> entry : entrySet) {
			//获取看k,v
			Integer key = entry.getKey();
			String value = entry.getValue();
			System.out.println(key+"----"+value);
		}
		map.put(5, "李晓红");//map.put新增
		map.remove(1);
		map.put(2, "周林");
		System.out.println(map);
		}
}

各集合总结

数据结构示意图

1---        栈 

 

 

2--        队列 

 

3---        数组  查询快、增删慢

 

4---        链表  查询慢、增删快

4.1单向链表

 

4.2双向链表 

 

5---        树 ;查询、增删都比较快

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值