java.util包下的集合接口:
1.List
a.List集合的特点:
有序的,并且允许重复的数据存在,可以根据索引取值
b.常用的List集合框架:
ArrayList :数组集合 很像队列
Vector:线程同步(排队)
Stack
c.ArrayList与Vector的区别:
性能方面,ArrayList采取了线程异步处理方式,效率更高,而Vector则采取线程同步(排队)方式。
d.LinkedList表示的是一个链表的操作类,这个类不仅实现了List接口,同时也实现了Queue(队列操作)接口,即采用FIFO(先进先出)的方式操作,就像在排队,队头永远指向新加入的对象。
代码如下:
package 作业; import java.util.LinkedList; public class Test { /** * @param 测试LinkedList类 */ public static void main(String[] args) { LinkedList<String> link=new LinkedList<String>(); link.add("A");//向链表中添加数据 link.add("B"); link.add("C"); System.out.println("初始化链表"+link);//输出链表内容 link.addFirst("D");//在链表的表头增加内容 link.addLast("E");//在链表的表尾增加内容 System.out.println("增加之后的链表"+link); System.out.println(link.element());//用element()方法找表头,输出 System.out.println(link);//找完之后的链表 System.out.println(link.peek());//用peek()方法找到表头,并且不删除 System.out.println(link);//找完之后的链表 System.out.println(link.poll());//找到并删除链表的头 System.out.println(link);//找完之后的链表 /** * 用FIFO方式取出内容 */ for(int i=0;i<link.size()+1;i++){ System.out.print(link.poll()+";"); } } }
2.Set
a.Set集合的特点:
无序的,数据不可重复,按值查找,所有重复的内容都靠hashCode()和equals()两个方法来区别。
b.常用的Set集合:
HashSet:迭代器操作,存放没有顺序 ,虽说是没有顺序,但是当输出的时候,按照一定的顺序,无论是什么类型的
迭代的意思:迭代输出就是将元素一个个进行判断,判断其是否有内容,如果有内容就将其取出
Iterator接口中的常用方法:
hasNext() 判断是否有下一个值
next()取出当前元素
LinkedHashSet:
TreeSet:有序的存放
Set接口的常用子类,HashSet,TreeSet。HashSet散列存放,TreeSet有序,但是TreeSet类排序说明:1,不能自定义类排序;2,需要指定顺序规则排序,验证代码:
package 作业; import java.util.Set; import java.util.TreeSet; class Person{ private String name; private int age; public Person(String name,int age){ this.name=name; this.age=age; } public String toString(){//重写toString()方法 return "姓名:"+this.name+";年龄:"+this.age; } } public class TreeSetDemo { public static void main(String[] args) { Set<Person> set=new TreeSet<Person>(); set.add(new Person("张三",30)); set.add(new Person("李四",33)); set.add(new Person("王五",35)); set.add(new Person("赵六",37)); set.add(new Person("孙七",38)); System.out.println(set); } }
会报错:
Exception in thread "main" java.lang.ClassCastException: 作业.Person cannot be cast to java.lang.Comparable at java.util.TreeMap.put(Unknown Source) at java.util.TreeSet.add(Unknown Source) at 作业.TreeSetDemo.main(TreeSetDemo.java:22)
所以必须要指定顺序,并且TreeSet中的每个对象所在的类都必须首先Comparable接口才可以正常使用,修正代码如下:
package 作业; import java.util.Set; import java.util.TreeSet; /** * * 指定排列顺序 * */ class Person implements Comparable<Person>{ private String name; private int age; public Person(String name,int age){ this.name=name; this.age=age; } public String toString(){//重写toString()方法 return "姓名:"+this.name+";年龄:"+this.age; } public int compareTo(Person per){ if(this.age>per.age){ return 1; }else if(this.age<per.age){ return -1; }else{ return 0; } } } public class TreeSetDemo2 { /** * @param args */ public static void main(String[] args) { Set<Person> set=new TreeSet<Person>(); set.add(new Person("张三",30)); set.add(new Person("李四",33)); set.add(new Person("王五",35)); set.add(new Person("赵六",37)); set.add(new Person("孙七",38)); System.out.println(set); } }
怎样得到值?
根据key值取value,先得到Key的Set集合,用keySet()方法得到视图,这样才可以迭代输出所有的key,然后再用get()方法取得
c.常用的Map集合:
HashMap TreeMap HashTable LinkedHashMap
代码如下:
package 作业; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class MapTest { /** * @param args */ public static void main(String[] args) { Map<String,String> map=new HashMap<String,String>(); map.put("A", "wudi"); map.put("B", "zhuling"); map.put("C", "kejing"); map.put("D", "chenjingting"); String val=map.get("A");//根据key取出value System.out.println("取出的内容是:"+val); if(map.containsKey("B")){//查找指定的key是否存在 System.out.println("搜索的key存在"); }else{ System.out.println("搜索的key不存在"); } /*输出全部的key*/ Set<String> keys=map.keySet();//得到全部的key Iterator<String> iter=keys.iterator();//实例化Iterator while(iter.hasNext()){ String str=iter.next(); System.out.println(str+"、"); } /*输出全部的value*/ Collection<String> values=map.values(); Iterator<String> it=values.iterator(); while(it.hasNext()){ String st=it.next(); System.out.println(st+"、"); } } }
总的来说,三种集合接口的用法是基本一致的,只不过是每种方法可能不太一样,像Map取值的话,就要先用keySet()方法;像HashSet,取值的话,要先用迭代器。
另外:
Collection接口 Map与其是同一级的
只有List和Set是它的子接口
Queue<E>也是Collection的子接口
( <E>泛型 <>指定数据类型,不指定的话就可以是任何类型 )
相关推荐
xmind格式的Java集合框架学习导图,包括Collection接口/Map接口以及具体实现类。 同样包含大厂面试题,也在导图中有所体现。 能学到什么: 更加成体系的知识框架,更加全面的、系统的知识。 思维导图: 思维导图具有...
Java集合框架是Java编程语言中的一个核心组成部分,它为存储、管理和操作对象提供了一套统一的接口和类。本文将深入解析Java集合框架的各个方面,包括Collection、List、Set和Map,以及它们的相关实现和使用原理。 ...
### Java集合框架总结 #### 一、Java集合框架概述 Java集合框架是Java标准库的一部分,它提供了一系列的接口和类来存储和操作各种类型的对象集合。这些接口和类遵循一致的设计模式,使得开发人员可以方便地管理和...
### Java集合框架详解 #### 一、Java集合框架概述 Java集合框架是Java标准库的重要组成部分,它提供了存储和操作对象的各种数据结构。通过使用集合框架,开发人员可以轻松地管理不同类型的数据集,并且能够利用...
Java集合框架是Java编程语言中一个至关重要的组成部分,它提供了数据结构和算法的抽象,使得开发者可以方便地存储和管理各种类型的数据。本篇将详细探讨Java集合框架的基础知识,包括核心接口、类的层级结构以及Java...
集合是将多个元素组成一个单元的...Java集合框架,为我们提供了一套性能优良、使用方便的接口和类,我们不必再重新发明轮子,只需学会如何使用它们,就可以处理实际应用中出现的问题了Java集合框架位于java.util包中
Java集合框架是Java编程语言中的核心部分,它提供了一组高效、灵活的数据结构,使得开发者可以方便地存储和管理各种类型的数据。Java集合框架主要包括两大类:Collection和Map。 Collection接口是所有单值容器的父...
本文档为本人学习 java 集合框架期间的学习总结笔记,希望对新学习的朋友有所帮助和参考价值。本人java 开发时间不是太长,可能存在不完善或不对之处,欢迎指正!
6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6....
JAVA学习 Java集合框架.ppt
面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣...
Java集合框架,set、list接口及其子集,接口的继承关系
根据提供的信息,我们可以总结并详细解释关于Java集合框架的一些关键知识点。这些知识点主要涉及Java集合框架中的各种数据结构,如List、Set、Map等,并深入探讨了它们在实际应用中的特性与用途。 ### Java集合框架...
《数据结构和Java集合框架》是清华大学出版社出版的一本经典教材,主要涵盖了计算机科学中的核心概念——数据结构以及Java编程语言中的集合框架。这本书通过深入浅出的方式,讲解了如何用Java实现各种常用的数据结构...
一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合框架练习 一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合框架练习 一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合...
Java集合框架是Java编程语言中一个至关重要的组成部分,它为数据存储和操作提供了丰富的类库。泛型是Java 5引入的一项创新特性,极大地增强了集合框架的安全性和效率。本讲解将深入探讨这两个主题,以及与之相关的...
List set ArraryList Map java集合框架笔记 基于Array的List,其实就是封装了Array所不具备的一些功能方便我们使用