Unit05: 集合操作 —— 查找表    

使用该类测试自定义元素的集合排序

package day05;
/**
* 使用该类测试自定义元素的集合排序
* @author adminitartor
*
*/
public class Point implements Comparable<Point>{
private int x;
private int y;
public Point(int x, int y) {
super();
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
} @Override
public String toString() {
return "("+x+","+y+")";
}
/**
* 该方法的作用是用来判断当前对象this与
* 参数给定的对象o之间比较大小的。
* 返回值不关注具体取值,只关注取值范围,
* 当:
* 返回值>0:当前对象大于参数对象(this>o)
* 返回值<0:当前对象小于参数对象
* 返回值=0:两个对象相等
*/
public int compareTo(Point o) {
int len = this.x*this.x+this.y*this.y;
int olen = o.x*o.x+o.y*o.y;
return len-olen;
} }

Point.java

排序自定义类型元素

package day05;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List; /**
* 排序自定义类型元素
* @author adminitartor
*
*/
public class SortListDemo1 {
public static void main(String[] args) {
List<Point> list
= new ArrayList<Point>();
list.add(new Point(3,4));
list.add(new Point(1,2));
list.add(new Point(5,7));
list.add(new Point(3,1));
list.add(new Point(6,2));
System.out.println(list);
/*
* Collections的sort方法要求集合元素
* 必须实现Comparable接口。
* 侵入性
*/
Collections.sort(list);
System.out.println(list);
}
}

SortListDemo1.java

排序字符串

package day05;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List; /**
* 排序字符串
* @author adminitartor
*
*/
public class SortListDemo2 {
public static void main(String[] args) {
List<String> list
= new ArrayList<String>(); list.add("苍#null");
list.add("范老师");
list.add("小泽老师"); System.out.println(list); Comparator<String> com
= new Comparator<String>(){
public int compare(String o1, String o2) {
return o1.length()-o2.length();
} }; Collections.sort(list,com);
System.out.println(list); }
}

SortListDemo2.java

队列也可以存储一组元素,但是存取元素必须遵循

package day05;

import java.util.LinkedList;
import java.util.Queue; /**
* java.util.Queue
* 队列
* 队列也可以存储一组元素,但是存取元素必须遵循
* 先进先出原则。
* @author adminitartor
*
*/
public class QueueDemo {
public static void main(String[] args) {
Queue<String> queue
= new LinkedList<String>();
/*
* boolean offer(E e)
* 入队操作,向队列末尾追加新元素
*/
queue.offer("one");
queue.offer("two");
queue.offer("three");
queue.offer("four"); System.out.println(queue);
/*
* E poll()
* 获取队首元素,获取后该元素即从队列
* 中被移除。
*/
String str = queue.poll();
System.out.println(str);
System.out.println(queue); /*
* E peek()
* 引用队首元素,获取后但不从队列中删除
*/
str = queue.peek();
System.out.println(str);
System.out.println(queue); //新循环遍历
for(String s : queue){
System.out.println(s);
}
System.out.println(queue); System.out.println("自行遍历开始!");
while(queue.size()>0){
str = queue.poll();
System.out.println(str);
}
System.out.println("遍历完毕了!");
System.out.println(queue);
}
}

QueueDemo.java

栈结构存储一组元素,但是存取需要遵循先进后出原则

package day05;

import java.util.Deque;
import java.util.LinkedList; /**
* 栈
* 栈结构存储一组元素,但是存取需要遵循先进后出原则
*
* java.util.Deque
* 双端队列,两端都可以进出队的队列,是Queue的
* 子类。
* Deque接口规定了两端进出队的方法。
* 当仅调用从一端进出队的方法时,就形成了栈的结构特点
*
* @author adminitartor
*
*/
public class Stack {
public static void main(String[] args) {
Deque<String> stack
= new LinkedList<String>(); stack.offer("one");
stack.offer("two");
System.out.println(stack);//[one,two] stack.offerLast("three");
System.out.println(stack);//[one,two,three] stack.offerFirst("four");
System.out.println(stack);//[four,one,two,three] String str = stack.poll();
System.out.println(str);//four str = stack.pollFirst();
System.out.println(str);//one str = stack.pollLast();
System.out.println(str);//three System.out.println(stack); /*
* 双端队列提供了入栈与出栈的方法
*/
/*
* void push(E e)
* 入栈操作
* 最后入栈的元素会在栈顶
*/
stack.push("three");
stack.push("four");
stack.push("five");
System.out.println(stack); /*
* E pop()
* 出栈操作
* 获取栈顶元素后该元素即从栈中被移除
*/
str = stack.pop();
System.out.println(str);
System.out.println(stack); str = stack.peek();
System.out.println(str);
System.out.println(stack); for(String s : stack){
System.out.println(s);
}
System.out.println(stack); }
}

Stack.java

删除Map中的元素

package day05;

import java.util.HashMap;
import java.util.Map; /**
* 删除Map中的元素
* @author adminitartor
*
*/
public class Map_Remove {
public static void main(String[] args) {
Map<String, Integer> map
= new HashMap<String, Integer>();
map.put("语文", 99);
map.put("数学", 98);
map.put("英语", 97);
map.put("物理", 96);
map.put("化学", 99); System.out.println(map);
/*
* 删除数学这一条记录
* V remove(K k)
* 根据给定的key将对应的key-value对
* 从Map中删除,返回值为该key对应的value
*/
Integer v = map.remove("数学");
System.out.println(map);
System.out.println(v);
}
}

Map_Remove.java

package day05;

import java.util.HashMap;
import java.util.Map; /**
* 删除Map中的元素
* @author adminitartor
*
*/
public class Map_Remove {
public static void main(String[] args) {
Map<String, Integer> map
= new HashMap<String, Integer>();
map.put("语文", 99);
map.put("数学", 98);
map.put("英语", 97);
map.put("物理", 96);
map.put("化学", 99); System.out.println(map);
/*
* 删除数学这一条记录
* V remove(K k)
* 根据给定的key将对应的key-value对
* 从Map中删除,返回值为该key对应的value
*/
Integer v = map.remove("数学");
System.out.println(map);
System.out.println(v);
}
}

判断Map是否包含给定元素

package day05;

import java.util.HashMap;
import java.util.Map; /**
* 判断Map是否包含给定元素
* @author adminitartor
*
*/
public class Map_Contains {
public static void main(String[] args) {
Map<String, Integer> map
= new HashMap<String, Integer>();
map.put("语文", 99);
map.put("数学", 98);
map.put("英语", 97);
map.put("物理", 96);
map.put("化学", 99); boolean ck = map.containsKey("语文");
System.out.println("key是否包含:"+ck); boolean cv = map.containsValue(99);
System.out.println("value是否包含:"+cv);
}
}

Map_Contains.java

package day05;

import java.util.HashMap;
import java.util.Map; /**
* 判断Map是否包含给定元素
* @author adminitartor
*
*/
public class Map_Contains {
public static void main(String[] args) {
Map<String, Integer> map
= new HashMap<String, Integer>();
map.put("语文", 99);
map.put("数学", 98);
map.put("英语", 97);
map.put("物理", 96);
map.put("化学", 99); boolean ck = map.containsKey("语文");
System.out.println("key是否包含:"+ck); boolean cv = map.containsValue(99);
System.out.println("value是否包含:"+cv);
}
}

HashMap的Key对于HashMap的影响

package day05;
/**
* HashMap的Key对于HashMap的影响
* 影响HashMap的查询性能的主要因素是在HashMap中
* 出现链表。
* 那么作为Key的元素的hashcode值与equals比较的结果
* 在Map中产生链表有很大的作用。要妥善重写他们。
*
* API手册中Object对于hashcode方法与equals的重写
* 有如下要求:
* 1:当我们重写一个类的equals方法,就应当连同重写
* hashcode方法
* 2:hashcode应当与equals比较结果一致,即:
* 当两个对象equals比较结果为true时,他们的
* hashcode方法返回的数字应当相等。反之亦然。
* 因为当两个作为key的对象hashcode相同但是
* equals比较不相同时,会在HashMap中产生链表,
* 影响散列表查询性能。
*
*
* @author adminitartor
*
*/
public class Key {
private int x;
private int y;
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + x;
result = prime * result + y;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Key other = (Key) obj;
if (x != other.x)
return false;
if (y != other.y)
return false;
return true;
} }

Key.java

Map 查找表,以key-value对的形式存储元素

package day05;

import java.util.HashMap;
import java.util.Map; /**
* java.util.Map
* Map 查找表
* 以key-value对的形式存储元素
* 常用实现类:HashMap 散列表(散列算法实现)
* @author adminitartor
*
*/
public class Map_Put_Get {
public static void main(String[] args) {
/*
* Map需要指定两个泛型,分别指定key与
* value的类型
*/
Map<String,Integer> map
= new HashMap<String,Integer>(); /*
* Map要求key不允许重复(equals比较)
* V put(K k,V v)
* 将给定的key-value对存入到Map中,
* 若key在map中已经存在了,则是替换value
* 操作,返回至则为被替换的value
* 若key不存在,则返回值为NULL
*/
map.put("语文", 99);
map.put("数学", 98);
map.put("英语", 97);
map.put("物理", 96);
/*
* 获取put返回值时,若返回值为包装类类型
* 注意不要用基本类型接收,避免自动拆箱
* 引起的空指针异常:
* int n = map.put("化学",99);
* 因为若"化学"作为key在Map中不存在,put
* 返回值为NULL,那么对其拆箱会引发空指针
*/
Integer n = map.put("化学", 99); System.out.println(map);
System.out.println(n); //重复的key是替换value操作
n = map.put("语文", 88);
System.out.println(map);
System.out.println(n); /*
* V get(K k)
* 根据给定的key获取对应的value
* 若给定的key不存在,则返回值为null
*/
n = map.get("数学");
System.out.println("数学:"+n); n = map.get("体育");
System.out.println("体育:"+n); }
}

Map_Put_Get.java

package day05;

import java.util.HashMap;
import java.util.Map; /**
* java.util.Map
* Map 查找表
* 以key-value对的形式存储元素
* 常用实现类:HashMap 散列表(散列算法实现)
* @author adminitartor
*
*/
public class Map_Put_Get {
public static void main(String[] args) {
/*
* Map需要指定两个泛型,分别指定key与
* value的类型
*/
Map<String,Integer> map
= new HashMap<String,Integer>(); /*
* Map要求key不允许重复(equals比较)
* V put(K k,V v)
* 将给定的key-value对存入到Map中,
* 若key在map中已经存在了,则是替换value
* 操作,返回至则为被替换的value
* 若key不存在,则返回值为NULL
*/
map.put("语文", 99);
map.put("数学", 98);
map.put("英语", 97);
map.put("物理", 96);
/*
* 获取put返回值时,若返回值为包装类类型
* 注意不要用基本类型接收,避免自动拆箱
* 引起的空指针异常:
* int n = map.put("化学",99);
* 因为若"化学"作为key在Map中不存在,put
* 返回值为NULL,那么对其拆箱会引发空指针
*/
Integer n = map.put("化学", 99); System.out.println(map);
System.out.println(n); //重复的key是替换value操作
n = map.put("语文", 88);
System.out.println(map);
System.out.println(n); /*
* V get(K k)
* 根据给定的key获取对应的value
* 若给定的key不存在,则返回值为null
*/
n = map.get("数学");
System.out.println("数学:"+n); n = map.get("体育");
System.out.println("体育:"+n); }
}

遍历Map

package day05;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set; /**
* 遍历Map
* 遍历Map有三种方式:
* 1:遍历所有的key
* 2:遍历每一组键值对
* 3:遍历所有的value(相对不常用)
* @author adminitartor
*
*/
public class MapDemo {
public static void main(String[] args) {
Map<String, Integer> map
= new HashMap<String, Integer>();
map.put("语文", 99);
map.put("数学", 98);
map.put("英语", 97);
map.put("物理", 96);
map.put("化学", 99); /*
* 遍历所有的key
* Set<K> keySet()
* 将当前Map中所有的key存入一个Set集合
* 后返回。遍历该集合就等于遍历了Map中
* 所有的key
*/
Set<String> keySet = map.keySet();
for(String key : keySet){
System.out.println("key:"+key);
} /*
* 遍历每一组键值对
* Map中每一组键值对由Map的内部类Entry
* 的一个实例保存。
* Set<Entry> entrySet()
* 该方法会将当前Map中每组键值对(若干的
* Entry实例)存入一个Set集合后返回
*/
Set<Entry<String,Integer>> entrySet
= map.entrySet();
for(Entry<String,Integer> e:entrySet){
String key = e.getKey();
Integer value = e.getValue();
System.out.println(key+":"+value);
} /*
* Collection<V> values()
* 该方法会返回当前Map中所有的value
*/
Collection<Integer> values
= map.values();
for(Integer value : values){
System.out.println("value:"+value);
}
}
}

MapDemo.java

package day05;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set; /**
* 遍历Map
* 遍历Map有三种方式:
* 1:遍历所有的key
* 2:遍历每一组键值对
* 3:遍历所有的value(相对不常用)
* @author adminitartor
*
*/
public class MapDemo {
public static void main(String[] args) {
Map<String, Integer> map
= new HashMap<String, Integer>();
map.put("语文", 99);
map.put("数学", 98);
map.put("英语", 97);
map.put("物理", 96);
map.put("化学", 99); /*
* 遍历所有的key
* Set<K> keySet()
* 将当前Map中所有的key存入一个Set集合
* 后返回。遍历该集合就等于遍历了Map中
* 所有的key
*/
Set<String> keySet = map.keySet();
for(String key : keySet){
System.out.println("key:"+key);
} /*
* 遍历每一组键值对
* Map中每一组键值对由Map的内部类Entry
* 的一个实例保存。
* Set<Entry> entrySet()
* 该方法会将当前Map中每组键值对(若干的
* Entry实例)存入一个Set集合后返回
*/
Set<Entry<String,Integer>> entrySet
= map.entrySet();
for(Entry<String,Integer> e:entrySet){
String key = e.getKey();
Integer value = e.getValue();
System.out.println(key+":"+value);
} /*
* Collection<V> values()
* 该方法会返回当前Map中所有的value
*/
Collection<Integer> values
= map.values();
for(Integer value : values){
System.out.println("value:"+value);
}
}
}

JAVASE02-Unit05: 集合操作 —— 查找表的更多相关文章

  1. JAVASE02-Unit04: 集合框架 、 集合操作 —— 线性表

    Unit04: 集合框架 . 集合操作 -- 线性表 操作集合元素相关方法 package day04; import java.util.ArrayList; import java.util.Co ...

  2. Day05:集合操作——线性表(二) / 查找表 / 文件操作——File(一)

    文件操作:https://www.cnblogs.com/wsnb8/p/11403626.html

  3. Day04:集合框架(下) / 集合操作——线性表(一)

    对象转型 向上转型: 什么是向上造型? 子类对象赋给父类引用 父类引用指向子类对象 父类类型 引用=子类对象; 子类转成父类    默认进行(父类引用指用子类对象). 为什么需要向上造型? 子类对象可 ...

  4. C语言数据结构基础学习笔记——静态查找表

    查找:在数据集合中寻找满足某种条件的数据元素的过程称为查找. 查找表:用于查找的数据集合称为查找表,一般有以下操作:①查找是否在表中:②查找属性:③进行操作. 查找表又分为: ①静态查找表:只可以进行 ...

  5. Map 查找表操作

    package seday13; import java.util.HashMap; import java.util.Map; /** * @author xingsir * java.util.M ...

  6. DOM操作样式表及其兼容性

    DOM操作样式表的时候,存在很多浏览器兼容上的问题,测试的时候用的是Firefox 28.0.IE11.IE8.Chrome.测试的时候发现,不兼容问题基本上都是IE8和非IE浏览器之家的问题,很多I ...

  7. day 69 orm操作之表关系,多对多,多对一(wusir总结官网的API)

    对象  关系  模型 wusir博客地址orm官网API总结 django官网orm-API orm概要: ORM 跨表查询 class Book(models.Model): title = mod ...

  8. 查找->动态查找表->哈希表

    文字描述 哈希表定义 在前面讨论的各种查找算法中,都是建立在“比较”的基础上.记录的关键字和记录在结构中的相对位置不存在确定的关系,查找的效率依赖于查找过程中所进行的比较次数.而理想的情况是希望不经过 ...

  9. 算法与数据结构(九) 查找表的顺序查找、折半查找、插值查找以及Fibonacci查找

    今天这篇博客就聊聊几种常见的查找算法,当然本篇博客只是涉及了部分查找算法,接下来的几篇博客中都将会介绍关于查找的相关内容.本篇博客主要介绍查找表的顺序查找.折半查找.插值查找以及Fibonacci查找 ...

随机推荐

  1. 在hive中遇到的错误

    1:如果在将文件导入到hive表时,查询结果为null(下图) 这个是因为在创建表的时候没有指定列分隔符,hive的默认分隔符是ctrl+a(/u0001)   2.当我复制好几行sql到hive命令 ...

  2. 网络知识学习1---(基础知识:ISO/OSI七层模型和TCP/IP四层模型)

    以下的内容和之后的几篇博客只是比较初级的介绍,想要深入学习的话建议自己钻研<TCP/IP详解 卷1:协议> 1.ISO/OSI七层模型    下四层是为数据传输服务的,物理层是真正的传输数 ...

  3. 事务日志以及虚拟日志文件(VLFs)概述

    Part 1:事务日志 每个 SQL Server 数据库都具有事务日志,用于记录所有事务以及每个事务对数据库所做的修改.必须定期截断事务日志以避免它被填满.但是,一些因素可能延迟日志截断,因此监视日 ...

  4. Mac下的Maven配置

    1.确保电脑已经安装java,并配置JAVA_HOME环境变量 2.从官网下载Maven压缩包并解压,zip或者其他格式的都行 3.进入终端,编辑环境变量配置文件 vi .bash_profile 可 ...

  5. Struts2 日期类型转换

    针对日期类java.util.Date进行类型转换,要求客户端使用"yyyy-MM-dd","yyyy/MM/dd"中的任意一种输入,并以"yyyy- ...

  6. 【html+css】关于页面布局中遇到的问题记录

    关于行内元素: 行内元素设置width无效, height无效(可以设置line-height), margin上下无效,padding上下无效,margin和padding可设置左右.   text ...

  7. Gym100947E || codeforces 559c 组合数取模

    E - Qwerty78 Trip Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u S ...

  8. 设置R启动时自动加载常用的包或函数

    在我前面的文章(http://www.cnblogs.com/homewch/p/5749850.html)中有提到R可以自定义启动环境,需要修改R安装文件中的ect文件夹下的配置文件Rprofile ...

  9. WordPress 的 Google 字体问题解决办法

    在国内访问的时候,WordPress 里面引用的 google 字体可能会导致加载速度变得很慢. 要修改的地方有(我使用的版本是 4.0): wp-includes 里面的 script-loader ...

  10. [IOS初学]ios 第一篇 storyboard 与viewcontroller的关系

    学习了一下ios,把一个基本的概念搞清楚了,在android或者wp中,大家基本都是习惯与一个画面场景代表一个类,新建场景的时候自动新建了类,但在ios中使用了storyboard之后发现,在stor ...