`
希绪弗斯
  • 浏览: 16573 次
社区版块
存档分类
最新评论

Java集合框架

 
阅读更多

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>泛型 <>指定数据类型,不指定的话就可以是任何类型    )

0
0
分享到:
评论

相关推荐

    【Java】Java集合框架思维导图。

    xmind格式的Java集合框架学习导图,包括Collection接口/Map接口以及具体实现类。 同样包含大厂面试题,也在导图中有所体现。 能学到什么: 更加成体系的知识框架,更加全面的、系统的知识。 思维导图: 思维导图具有...

    Java集合框架详解

    Java集合框架是Java编程语言中的一个核心组成部分,它为存储、管理和操作对象提供了一套统一的接口和类。本文将深入解析Java集合框架的各个方面,包括Collection、List、Set和Map,以及它们的相关实现和使用原理。 ...

    Java集合框架总结

    ### Java集合框架总结 #### 一、Java集合框架概述 Java集合框架是Java标准库的一部分,它提供了一系列的接口和类来存储和操作各种类型的对象集合。这些接口和类遵循一致的设计模式,使得开发人员可以方便地管理和...

    java集合框架图

    ### Java集合框架详解 #### 一、Java集合框架概述 Java集合框架是Java标准库的重要组成部分,它提供了存储和操作对象的各种数据结构。通过使用集合框架,开发人员可以轻松地管理不同类型的数据集,并且能够利用...

    Java集合框架学习笔记

    Java集合框架是Java编程语言中一个至关重要的组成部分,它提供了数据结构和算法的抽象,使得开发者可以方便地存储和管理各种类型的数据。本篇将详细探讨Java集合框架的基础知识,包括核心接口、类的层级结构以及Java...

    Java集合框架.ppt

    集合是将多个元素组成一个单元的...Java集合框架,为我们提供了一套性能优良、使用方便的接口和类,我们不必再重新发明轮子,只需学会如何使用它们,就可以处理实际应用中出现的问题了Java集合框架位于java.util包中

    Java集合框架常见面试题.pdf

    Java集合框架是Java编程语言中的核心部分,它提供了一组高效、灵活的数据结构,使得开发者可以方便地存储和管理各种类型的数据。Java集合框架主要包括两大类:Collection和Map。 Collection接口是所有单值容器的父...

    JAVA集合框架学习总结

    本文档为本人学习 java 集合框架期间的学习总结笔记,希望对新学习的朋友有所帮助和参考价值。本人java 开发时间不是太长,可能存在不完善或不对之处,欢迎指正!

    6.java集合框架.zip

    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学习 Java集合框架.ppt

    面渣逆袭 Java 集合框架篇.pdf

    面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣...

    java 集合框架

    Java集合框架,set、list接口及其子集,接口的继承关系

    Java集合框架常见面试题夜间阅读版.pdf

    根据提供的信息,我们可以总结并详细解释关于Java集合框架的一些关键知识点。这些知识点主要涉及Java集合框架中的各种数据结构,如List、Set、Map等,并深入探讨了它们在实际应用中的特性与用途。 ### Java集合框架...

    数据结构和Java集合框架源代码

    《数据结构和Java集合框架》是清华大学出版社出版的一本经典教材,主要涵盖了计算机科学中的核心概念——数据结构以及Java编程语言中的集合框架。这本书通过深入浅出的方式,讲解了如何用Java实现各种常用的数据结构...

    一个扑克游戏,用于Java集合框架练习.zip

    一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合框架练习 一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合框架练习 一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合...

    java集合 框架 泛型

    Java集合框架是Java编程语言中一个至关重要的组成部分,它为数据存储和操作提供了丰富的类库。泛型是Java 5引入的一项创新特性,极大地增强了集合框架的安全性和效率。本讲解将深入探讨这两个主题,以及与之相关的...

    java集合框架笔记

    List set ArraryList Map java集合框架笔记 基于Array的List,其实就是封装了Array所不具备的一些功能方便我们使用

Global site tag (gtag.js) - Google Analytics