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. 判断横屏竖屏,然后CSS重新计算

    function hengshuping(){ if(window.orientation==180||window.orientation==0){ alert("竖屏状态!") ...

  2. Microchip微芯HCS301解密HCS360解密HCS361芯片解密多少钱?

    Microchip微芯HCS系列芯片解密型号: HCS101 | HCS200 | HCS201 | HCS201T | HCS300 | HCS300T HCS301 | HCS301T | HCS ...

  3. 数据类型和Json格式

    1. 前几天,我才知道有一种简化的数据交换格式,叫做yaml. 我翻了一遍它的文档,看懂的地方不多,但是有一句话令我茅塞顿开. 它说,从结构上看,所有的数据(data)最终都可以分解成三种类型: 第一 ...

  4. 字典树 - A Poet Computer

    The ACM team is working on an AI project called (Eih Eye Three) that allows computers to write poems ...

  5. Coreseek 安装指南

    Coreseek 中文官网:http://www.coreseek.cn/ Sphinx0.9.9 中文手册:http://www.coreseek.cn/docs/coreseek_3.2-sphi ...

  6. Winform TextBox中只能输入数字的几种常用方法(C#)

    方法一: private void tBox_KeyPress(object sender, KeyPressEventArgs e) { ; //禁止空格键 )) return; //处理负数 if ...

  7. ArcEngine奇怪异常:HRESULT:0x80040351

    错误如图 根据该博客,http://blog.csdn.net/u011609113/article/details/51155116, 显示该错误为Duplicate Field Names wit ...

  8. assert_option()可以用来对assert()进行一些约束和控制

    一.evaleval用法:eval() 函数把字符串按照 PHP 代码来计算.该字符串必须是合法的 PHP 代码,且必须以分号结尾.如果没有在代码字符串中调用 return 语句,则返回 NULL.如 ...

  9. Ubuntu播放yuv文件

    mplayer -demuxer rawvideo -rawvideo w=176:h=144 test.yuv mplayer -fps 30 test.264 ffmpeg采集摄像头视频数据 ff ...

  10. Hibernate加载数据失败failed to lazily initialize a collection of role

    在测试获取数据库中的数据或者在页面获取时,有时会遇到这样的错误提示: failed to lazily initialize a collection of role: com.exam.entity ...