`
peihong-ph
  • 浏览: 22651 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

set、list与map

阅读更多
               1、Collection接口有两个子接口:  Set接口 和 List接口。
*
* 2、 Set接口的特性及其实现类 HashSet.
* 1) Set接口与Collection父接口完全一样,没有增加抽象方法。
* 2) Set接口相关的容器,其元素是无序的。
* 3) 元素是唯一,不重复。(采用屏蔽技术将重复的元素屏蔽在外)
* 4) Set接口的实现类为: HashSet.
*
* 注意: 凡是与Collection接口相关的容器在添加元素会反馈一
* 个boolean值,表明是否添加成功了。
*
* 3、HashSet实现类的特性:
* 1) 元素无序;
* 2) 元素不重复,添加重复元素时采用屏蔽技术屏蔽掉。
* 3) 判断元素相等依赖 equals()和hashCode()两个方法。
@Override
public boolean equals(Object obj) {
Dog d2 = (Dog)obj;

if( this.name.equals(d2.name)
&& this.sex == d2.sex
&& this.age == d2.age ){

return true;
}else{
return false;
}
}

@Override
public int hashCode() {
//return 9898;

return this.name.hashCode() + (this.sex+"").hashCode() + this.age;
}
*
* 注意: equals()和hashCode()均来源于 Object类。
*
* 注意: 在java语言中,规定:任何一个对象都有一个哈希编码,该编码是一个整数,由系统自动生成。
*
* 在java语言中,规定: 相等的对象拥有相同的哈希编码。 
*
* 结论: 当容器由HashSet类所构建的且存放自定义类的对象,则要求该 自定义类必须重写 equals()和hashCode()两个方法。
*
* 4、Set接口的子接口为:  SortedSet 及 其特性。
* 1) 元素会按大小自动排序;
* 2) 元素不重复,添加重复元素时采用屏蔽技术屏蔽掉。
*
* 5、SortedSet接口的实现类为: TreeSet及其特性:
* 1) 元素会按大小自动排序;
* 2) 元素不重复,添加重复元素时采用屏蔽技术屏蔽掉。
*
* 3) 判断元素相等依赖 equals(),但实质上依赖 compareTo()方法。

*
* 结论: 当容器由TreeSet构建的且用来存放自定义类的对象时,则要求该自定义类必须实现Comparable接口,重写compareTo()方法,为对象比较大小指定条件。
*
* 注意:在重写compareTo()方法时,尽量对对象的所有属性一一比较大小,从而实现比较相等与equals()方法同步。
class  Cat implements  Comparable {
@Override
public int compareTo(Object o) {
Cat c2 = (Cat)o;

int x = this.name.compareTo(c2.name);
int y = (this.sex+"").compareTo( String.valueOf(c2.sex) );
int z = this.age - c2.age;
if( x != 0 ){
return x;
}else if( z != 0 ){
return z;
}else{
return y;
}

                           1、Collection接口的另一个子接口:List其特性如下:
* 1) 元素在位置上是有序;
* 2) 元素可以重复;
* 3) 它除了拥有继承自父接口的抽象方法外,还新增了一些与位置操作相关的方法。
* 4) List接口的常用实现类:  ArrayList 和 LinkedList。
*
* 2、通过案例掌握List接口新增的与位置操作相关的方法:
* 插入、删除、获取、查找、替换等。
*
* 3、List接口的常用实现类ArrayList的特性?
* 1) ArrayList实现类采用队列的原理来管理元素。
* 在插入和删除元素时,效率较低;而查找元素效率较高。
*
* 2) 元素在位置上是有序;
* 3) 元素可以重复;
* 4) 它也拥有与位置操作相关的方法。
* 5) 它在判断元素相等时依赖 equals()方法。
*
* 4、List接口的常用实现类 LinkedList的特性
* 1) LinkedList实现类采用链表的原理来管理元素。
* 在插入和删除元素时,效率较高;而查找元素是效率较低。
*
* 2) 元素在位置上是有序;
* 3) 元素可以重复;
* 4) 它也拥有与位置操作相关的方法。
* 5) 它在判断元素相等时依赖 equals()方法。
*
* 5、与List接口相关的容器如何进行遍历?
* Iterator迭代器接口
* 新增的for循环
*
* ListIterator迭代器接口专门针对与List接口
* 相关的容器进行遍历(可正向也可逆向遍历)。
* 注意:  ListIterator接口专门针对与List接口相关的容器进行操作。
System.out.println("\n采用ListIterator迭代器接口实现容器的正向遍历:");

ListIterator lit = alist.listIterator();//1
while( lit.hasNext() ){//2
Object obj = lit.next();//3
System.out.println( obj );//4
}
System.out.println("\n采用ListIterator迭代器接口实现容器的逆向遍历:");

ListIterator lit2 = alist.listIterator( alist.size() );//1

while( lit2.hasPrevious() ){//2
Object obj = lit2.previous(); //3
System.out.println( obj );//4
}
6、与List接口相关的容器进行元素的排序等操作的特殊工具类: collections
* 1) 它来源于 java.util.Collections;
* 2) 它专家针对与List接口相等的容器进行操作。
* 3) 它提供了一些常用的方法:
*/
专门针对与List接口相关的容器进行操作的工具类:  Collections
Collections.shuffle(alist);//打乱元素的原有顺序,实现随机排列

Collections.reverse( alist );//将元素逆序过来(头变尾,尾变头)

Collections.sort( alist );//将元素升序排列。

int loc = Collections.binarySearch(alist, key); //先排序,后查找。 同时,在比较元素相等时依赖equals(),实质上依赖compareTo()方法。

Comparator   com   =   Collections.reverseOrder();
Collections.sort(list,   com);//sort和reverseOrder结合使用可以实现逆序

Comparator com=new HeightComparator();
Collections.sort(alist,com);//HeightComparator是实现了Comparator接口的一个自定义类,按身高来排序
验证与List接口相关的容器操作的工具类Collections在采用二分查找法查找元素时的特性。
验证List接口的常用方法:  indexOf(); 和binarySearch();
Indexof()与equals相关
BinarySearch()与compareTo相关
* 结论:  当与List接口相关的容器中存放的是自定义类的对象且要求进行排序,则该自定义类必须实现Comparable接口,重写compareTo()方法,为排序指定对象比较大小的条件。
*
* 注意: 在重写compareTo()方法时尽量做到对对象的所有属性一一比较大小。


* 1、Map接口的特性:
* 1) 它的元素由两部分(键和值)组成;其中键是唯一的,不重复。
* 2) 元素是无序的,即:没有按键排序。
* 3) 元素不重复,当添加重复的元素(主要判断键是否重复)时采用覆盖技术,
* 用新元素的值覆盖旧元素的值,而键不变。
* 4) 它为容器规定相关的操作方法:
* put(key , value); 添加元素。
*
* 5) 它有一个子接口SortedMap及常用实现类 HashMap.
*
* 2、通过案例掌握Map接口的常用抽象方法。
*
* 3、如何对Map接口相关的容器进行遍历
* keySet() 将所有元素的键收集起来构成一个Set接口的集合。
* Set  keys = m1.keySet();
Iterator  it = keys.iterator();//2

while( it.hasNext() ){//3

String key = (String)it.next();//4

Double value = (Double)m1.get(key);//5

System.out.println("水果名: " + key + "  价格: " + value + " RMB/500g");
}
entrySet()将所有元素的键/值收集起来构成一个Set接口的集合。
Set  elem=m1.entrySet();
Iterator  it = elem.iterator();//2
若写为泛型为:Set <Entry<String,Integer>>  elem=m1.entrySet();
Iterator<Entry<Character,Integer>> it1=tm.entrySet().iterator();
* 4、Map接口的常用实现类 HashMap及其特性
* 1) 元素无序(按键无序);
* 2) 元素不重复,添加重复元素时采用覆盖技术用新元素的值覆盖旧元素的值。
* 3) 判断元素相等主要是判断元素的键是否相等。
* 在判断相等时,依赖equals()和hashCode()两个方法。
*
* 5、Map接口的子接口为 SortedMap及其特性
* 1) 元素会按键的大小自动排序。即:元素是有序的。
* 2) 元素不重复,添加重复元素时采用覆盖技术用新元素的值覆盖旧元素的值。
*
* 3) 判断元素相等主要是判断元素的键是否相等。
* 在判断相等时,依赖compareTo()方法。
*
* 6、SortedMap接口的实现类为: TreeMap及其特性
* 同上。
* 验证TreeMap的特性
*
* 结论: 当容器由TreeMap实现类构建的且元素的键为自定义类的对象时,则要求
* 该类必须实现Comparable接口,重写compareTo()方法,为对象的键比较
* 大小指定条件。
*
* 注意:  在重写compareTo()方法时,尽量对对象的所有属性一一比较大小。
分享到:
评论

相关推荐

    java中set、list和map的使用方法实例

    // java中对象容器主要有Set,List和Map三个接口类。 // 迭代器(Iterator)模式,又叫做游标(Cursor)模式。 // GOF给出的定义为:提供一种方法访问一个容器(container)对象中的各个元素, // 而又不需暴露该...

    集合概述set、List、Map

    ### 集合概述:set、List、Map #### 一、集合框架概述 ##### 1.1.1 容器简介 在Java编程中,集合框架是一个非常重要的概念,它提供了一种灵活的方式来存储、操作和管理不同类型的对象集合。集合框架的主要目标是...

    set,list,map区别与联系

    ### set、list、map的区别与联系 #### 一、概述 在Java编程语言中,`set`、`list`和`map`是非常重要的数据结构,它们分别代表了不同的集合类型,各自有着独特的特性与用途。 - **List**:有序集合,可以包含重复...

    set.list.map接口

    在Java编程语言中,集合框架是处理对象的重要工具,其中包括Set、List和Map三大接口。这些接口提供了多种数据结构和操作方法,使得开发者能够高效地组织和管理数据。 1. **Set接口**: Set接口表示一个不包含重复...

    List,set,Map 的用法和区别

    Java 集合框架中 List、Set、Map 的用法和区别 Java 集合框架(Java Collections Framework)是 Java 语言中的一个重要组件,提供了一些基本的数据结构和算法来操作和存储数据。其中,List、Set、Map 是三个非常...

    Set-List-Map.rar_DEMO_list set map

    在Java编程语言中,集合框架是处理对象组的重要工具,主要包括`List`、`Set`和`Map`接口。这些接口及其实现类提供了丰富的功能,适用于各种数据存储和操作需求。`Set-List-Map.rar_DEMO_list set map`这个压缩包文件...

    Collection,List,Set和_Map用法和区别

    Collection, List, Set 和 Map 用法和区别 Collection 是 Java 中的一种对象集合,提供了许多有用的方法来操作集合元素,例如添加、删除、遍历等。Collection 是一个接口,下面有两个子接口:List 和 Set。 List ...

    java集合类list-set-map.doc

    java集合类list-set-map.doc

    JAVA集合map、list、set详解

    详细描述map、list、set的常用子类特性,各个场景的适用。

    Java操作Redis,实现String、List、Map的set和get

    本文将深入探讨如何使用Java来操作Redis,包括设置和获取String、List和Map类型的数据,并且会介绍如何进行封装和单元测试。 首先,要与Redis进行交互,我们需要引入Jedis库,这是Java最常用的Redis客户端。在你的...

    java中三种集合set、map、list的区别与联系

    在Java编程语言中,集合框架提供了多种数据结构来存储和操作数据,其中最常用的是`Set`、`Map`和`List`。这三种集合类型各自具有独特的特性和用途,理解它们之间的区别与联系对于有效地使用Java进行数据管理至关重要...

    List<Map>转化为List工具类

    一般使用springjdbc、hibernate的sql查询,库获取到的数据都是List&lt;Map, Object&gt;&gt;结果集,如果我们要转化为JavaBean,则需要做一系列的map.get(),然后obj.set()。 此工程中就是解决List&lt;Map, Object&gt;&gt;转化为...

    测试报告与总结\list,set,map,数组间的相互转换

    测试报告与总结\list,set,map,数组间的相互转换.rar测试报告与总结\list,set,map,数组间的相互转换.rar测试报告与总结\list,set,map,数组间的相互转换.rar测试报告与总结\list,set,map,数组间的相互转换.rar

    java中list、set和map 的区别

    ### Java中List、Set和Map的区别 在Java编程语言中,`List`、`Set`和`Map`是集合框架中的三个核心接口,它们分别代表了不同类型的集合数据结构,各自有着独特的特性和应用场景。 #### List `List`接口是最常用的...

    List set map集合容器的区别

    根据给定文件的信息,我们可以详细地探讨一下Java中几种主要的集合容器——List、Set以及Map的区别,并且深入了解它们各自的特性和应用场景。 ### 一、List #### 1. ArrayList - **特点**:`ArrayList`是基于动态...

    Java_Collection_List-Set-Map.zip_list set map

    在Java编程语言中,集合框架是处理对象组的重要工具,主要包括List、Set和Map三大接口。这些接口由Java Collection Framework提供,它是一个统一的架构,用于存储和操作各种类型的对象。接下来,我们将深入探讨这三...

    Set,List,Map的区别

    ### Set,List,Map 的区别与应用 在 Java 编程语言中,集合框架是一个非常重要的概念,它提供了存储和操作对象的方式。集合框架主要包括三种类型的集合:`Set`、`List` 和 `Map`。这三种集合各自拥有独特的特性和...

    list,set,map,数组间的相互转换

    这个操作不会丢失任何数据,但需要注意的是,`Set`本身是无序的,所以转换后的`List`中的元素顺序可能与原`Set`中的不同。 **示例代码:** ```java import java.util.ArrayList; import java.util.HashSet; import...

    Java集合Collection、List、Set、Map使用详解编程资料

    Java集合Collection、List、Set、Map使用详解

    set,list,map区别与联系.docx

    【标题】:集合框架中的set、list和map区别与联系 在Java编程中,集合框架是数据结构的核心,其中set、list和map是最常见的三种数据结构。这些数据结构各有特点,适应不同的应用场景。 1. **List(列表)** - **...

Global site tag (gtag.js) - Google Analytics