
正文
哈希表java代码 哈希表 java
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java实现遍历哈希映射表map的方法汇总
方法/步骤
1、JDK,开发必须的环境
2、IDE,还是推荐Eclipse,如果你的电脑够快,可以安装Idea,用过一次,太吃内存,就被抛弃了,但是很多同行都在推荐,听说很好。
现在开始进入今天的正题,使用Java代码遍历Map集合的方法汇总。
1、创建一个Java类,命名为MapTest
2、创建一个Map集合,并定义类型和put值:
3、循环遍历Map集合的第一种方法,代码如下:
/**
* 第一种
* foreach循环进行遍历
* 遍历的是key值,然后通过get(key)或者值
* key和keyset
*/
private static void firstMethod(HashMapInteger, String map){
System.out.println("foreach循环进行遍历");
for (Integer key : map.keySet()) {
System.out.println("key:"+key+"对应的值为:"+map.get(key));
}
}
4、通过Iterator遍历Map集合的第二种方法获取,代码如下:
/**
* 第二种
* 通过Iterator遍历获取
* 和List的遍历原理相同
*/
public static void secondMethod(HashMapInteger, String map){
System.out.println("通过Iterator遍历获取");
IteratorEntryInteger, String inte = map.entrySet().iterator();
while(inte.hasNext()){
Map.EntryInteger, String m = inte.next();
System.out.println("key:"+m.getKey()+"对应的值为:"+m.getValue());
}
}
5、通过map方法map.entrySet()遍历获取值的第三种方法,代码如下:
/**
* 第三种,通过map方法map.entrySet()遍历获取值
*/
public static void thirdMethod(HashMapInteger, String map){
System.out.println("第三种方式:entry");
for (EntryInteger, String str : map.entrySet()) {
System.out.println("key:"+str.getKey()+"对应的值为:"+str.getValue());
}
}
6、通过for循环,map.values()循环遍历获取值的第四种方法,代码如下:
这种方法是直接获取值,不获取key值:
/**
* 第四种,通过for循环,map.values()循环遍历获取值 直接获取值
*/
public static void fourthMethod(HashMapInteger, String map) {
System.out.println("通过map.values()循环遍历直接获取值");
for (String string : map.values()) {
System.out.println("map的值为:" + string);
}
}
7
7、不管是遍历Map还是List的,其本质都是获取对应的值,程序员在开发中可以根据开发场景适当的选择各种方法,但是理解其本质才是最主要的。
相关问答
Q1: 编写一程序,用哈希表实现学生成绩单的存储与查询
import java.util.Hashtable;
声明引用了吗?
给你完整代码
学生类Student,代码如下:
class Student{
private String no;
private String name;
private Integer score;
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getScore() {
return score;
}
public void setScore(Integer score) {
this.score = score;
}
public String toString(){
return "学号:" + no + " 姓名:" + name + " 成绩:" + score;
}
}
主类HashTest,代码如下:
import javax.swing.*;
import java.util.Vector;
import java.util.Hashtable;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class HashTest extends JFrame {
JLabel lblsearchbyidorname;
JTextField txfidorname;
JButton btnsearchbyidorname;
JTable reader;
JButton btnadd;
JButton btndelete;
Hashtable ht;
Vector colnames;
JLabel lblno;
JLabel lblname;
JLabel lblscore;
JTextField addno;
JTextField addname;
JTextField addscore;
Vector data;
public HashTest() throws HeadlessException {
super("学生成绩管理");
ht = new Hashtable();
lblsearchbyidorname = new JLabel("学号:");
txfidorname = new JTextField(20);
lblno = new JLabel("学号");
lblname = new JLabel("姓名");
lblscore = new JLabel("分数");
addno = new JTextField(10);
addname = new JTextField(12);
addscore = new JTextField(10);
btnsearchbyidorname = new JButton("查找--");
btnadd = new JButton("新增");
btndelete = new JButton("删除");
colnames = new Vector();
colnames.add("学号");
colnames.add("姓名");
colnames.add("成绩");
data = new Vector();
reader = new JTable(new ReaderTableModel(data,colnames));
reader.setPreferredSize(new Dimension(700,260));
JPanel pnlsearch = new JPanel();
pnlsearch.add(lblsearchbyidorname);
pnlsearch.add(txfidorname);
pnlsearch.add(btnsearchbyidorname);
pnlsearch.add(btndelete);
JScrollPane scptable = new JScrollPane(reader,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
JPanel pnladd = new JPanel();
pnladd.add(lblno);
pnladd.add(addno);
pnladd.add(lblname);
pnladd.add(addname);
pnladd.add(lblscore);
pnladd.add(addscore);
pnladd.add(btnadd);
reader.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
ScoreHandler sh = new ScoreHandler();
btnadd.addActionListener(sh);
btndelete.addActionListener(sh);
btnsearchbyidorname.addActionListener(sh);
Container c = getContentPane();
c.add(pnlsearch,BorderLayout.NORTH);
c.add(scptable,BorderLayout.CENTER);
c.add(pnladd,BorderLayout.SOUTH);
setSize(600,400);
setVisible(true);
}
public static void main(String[] args) {
new HashTest();
}
class ScoreHandler implements ActionListener{
public void actionPerformed(ActionEvent e) {
JButton btn = (JButton)e.getSource();
if(btn == btnsearchbyidorname){
Object obj = ht.get(txfidorname.getText().trim());
if(obj == null){
JOptionPane.showMessageDialog(null,"没有找到!");
}else{
JOptionPane.showMessageDialog(null,"查询结果如下:\n" + obj.toString());
}
}else if(btn == btnadd){
Student stu = new Student();
stu.setName(addname.getText().trim());
stu.setNo(addno.getText().trim());
stu.setScore(Integer.valueOf(addscore.getText().trim()));
ht.put(stu.getNo(),stu);
addDataToTable(stu);
addname.setText("");
addno.setText("");
addscore.setText("");
}else if(btn == btndelete){
int index = reader.getSelectedRow();
if (index == -1){
JOptionPane.showMessageDialog(null,"你没有选择学生!");
}else{
String no = (String)reader.getValueAt(index,0);
Student stu = (Student)ht.remove(no);
JOptionPane.showMessageDialog(null,"学生成绩删除!\n" + stu.toString());
data.remove(index);
reader.repaint();
}
}
}
}
public void addDataToTable(Student stu){
Vector temp = new Vector();
temp.add(stu.getNo());
temp.add(stu.getName());
temp.add(stu.getScore());
data.add(temp);
reader.repaint();
}
}
Q2: JAVA创建一个哈希表储存数据并输出,要完整代码
我就不写了,给个提示吧:
建一个类,名字就叫员工,它有三个属性,分别是你要的三个数据,名字、工龄、工号。然后,每次put的时候这样:put('1234',员工1);以员工工号为key,类员工为value
Q3: java 多线程操作hashtable(添加,删除,遍历)
public class TestThread {
public static void main(String[] args){
MapInteger, Object tables = new HashtableInteger, Object();
Thread add = new Thread(new ThreadAdd(tables));
Thread del = new Thread(new ThreadDel(tables));
Thread count = new Thread(new ThreadCount(tables));
//启动线程
add.start();
del.start();
count.start();
}
/**
*添加对象线程
*/
private static class ThreadAdd implements Runnable{
private MapInteger, Object table;
public ThreadAdd(MapInteger, Object tables){
this.table=tables;
}
public void run() {
// TODO Auto-generated method stub
for(int i=0;i10;i++){
table.put(i, new Object());
System.out.println("添加对象,序号为:"+i);
}
}
}
/**
*删除对象线程
*/
private static class ThreadDel implements Runnable{
private MapInteger, Object table;
public ThreadDel(MapInteger, Object table){
this.table=table;
}
public void run() {
// TODO Auto-generated method stub
for(int i=0;i10;i++){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
table.remove(i);
System.out.println("移除对象,序号为:"+i);
}
}
}
/**
*统计线程
*/
private static class ThreadCount implements Runnable{
private MapInteger, Object table;
public ThreadCount(MapInteger, Object table){
this.table=table;
}
public void run() {
// TODO Auto-generated method stub
for(int i=0;i10;i++){
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("当前队列还剩"+table.size()+"个对象");
}
}
}
}
这是我的写的demo,不知道符合不符合你的意思,大家共同交流共同进步。
Q4: java中的Hashtable怎么用,请详细举例子说明,拜托了 谢谢
就是哈希表,下面这个示例创建了一个数字的哈希表。它将数字的名称用作键: HashtableString, Integer numbers = new HashtableString, Integer();
numbers.put("one", 1);
numbers.put("two", 2);
numbers.put("three", 3);
要获取一个数字,可以使用以下代码:
Integer n = numbers.get("two");
if (n != null) {
System.out.println("two = " + n);
}
Q5: 用java编写哈希表,输入一组数据,创建一个哈希表,然后进行元素的查询、删除
#包括中
#包括中
#包括
/ /#包括
#定义50 HASH_LEN / /哈希表的长度
#定义男47
#定义NAME_NO 30 / /数字名称
typedef结构名称
{
的char * PY; / /名称的字母
K; / /拼音对应的整数
}名称;
名称名单[HASH_LEN];
typedef的struct hterm的/ /哈希表
{哈希表java代码,
炭* PY / /名称的字母
K; / /拼音对应的整数
诠释SI / /查找长度
} HASH; BR / HASH HashList的[HASH_LEN];
/ * -----------------------名称(结构数组)来初始化 - -------------------------------- * /
的无效InitNameList()
{
名单[0]。 PY =的“chenghongxiu”;
名单[1]。 PY =“元昊”;
名单[2]。 PY =“襄阳”;
名单[3]。 PY =的“zhanghen”;
名单[4]。 PY =的“chenghongxiu”;
名单[5]。 PY =“杨小凯”;的
名单[6]。 PY =“六朋”;
名单[7]。 PY =的“shenyonghai”;
名单[8]。 PY =“chengdaoquan”名单[9]。 PY =的“ludaoqing”;
名单[10]。 PY =的“gongyunxiang”;
名单[11]。 PY =的“sunzhenxing”;
名单[12]。 PY =的“sunrongfei”;
名单[13]。 PY =的“sunminglong”;
名单[14]。 PY =“张皓”;
名单[15]。 PY =“田苗”;
名单[16]。 PY =的“yaojianzhong”;
名单[17]。 PY =的“yaojianqing”;
名单[18]。 PY =的“yaojianhua”;
名单[19]。 PY =的“yaohaifeng”;
名单[20]。 PY =的“chengyanhao”;
名单[21]。 PY =的“yaoqiufeng”;
名单[22]。 PY =的“qianpengcheng”;
名单[23]。 PY =的“yaohaifeng”;
名单[24]。 PY =的“bianyan”;
名单[25]。 PY =“linglei”;
名单[26]。 PY =的“fuzhonghui”;
名单[27]。 PY =的“huanhaiyan”;
名单[28]。 PY =的“liudianqin”;
名单[29]。 PY =的“wangbinnian”
字符* F;
INT R,S0;
(INT I = 0; NAME_NO; + +)
{
S0 = 0;
F =名单[I]。 PY
相关(r = 0; *(F + R)= NULL与r + +)/ /方法:每个字符的字符串对应的ASCII码的总和,所得到的整数作为哈希表的关键字
S0 =(F + R)+ S0;
名单[I]。 K = S0;
}
}
/ * -----------------------建立哈希表--------------------------------- * /
的无效CreateHashList()
{(INT I = 0; NAME_NO; + +)
{
HashList [I]。 PY =“”;
HashList [I]。 K = 0;
HashList [I]。 SI = 0;
}
(I = 0; NAME_NO + +)
{
总和= 0;
ADR =(名单[I] K)%M / /哈希函数
- = ADR;
(HashList [ADR] SI == 0)/ /如果没有冲突
{ HashList [ADR]。 K =的名单[I]。 K;,
HashList [ADR]。 PY =的名单[I]。 PY;,
HashList [ADR]。 SI = 1;
} 其哈希表java代码他/ /冲突
{
{
D =(D +((名单[I] K))%10 + 1)%M / /伪哈希总和=总和+1 / /发现号加1
}(HashList [D] K!= 0);
BR / HashList的研究[D]。 K =的名单[I]。 K;
HashList的研究[D]。 PY =的名单[I]。 PY;
HashList的研究[D]。 SI =总和+1;
}
}
}
/ * ------------------- ------------------查找------------------------------- ----- * /
的无效FindList()
{
的printf(“\ n \ n已请输入名字的拼音:”); / /输入名称
字符名[20] = {0};
scanf函数(“%”,名称)
INT S0 = 0;
(R = 0; 20,R + +)/ /找到对应的字母的名称一个整数(关键字)
S0 + =名称[R]。
总和= 1; BR / ADR = S0%M,/ /使用哈希函数
= ADR;
如果判断(HashList [ADR]。K == S0)/ /三例
的printf(“\ N名:%s关键字:%d个查找长度:1”,HashList [J]。PY,S0);
否则,如果(HashList [ADR]。K == 0)
的printf(“有没有这样的记录!”); 其他
{
G = 0;
{
D =(D + S0%10 +1)%M; / /伪散货的列
总和=总和+1;
(HashList的研究[D]。K == 0)
{
的printf(“无记录!”); br / G = 1;
}
(HashList并[d],K = S0)
{
的printf(“\ N名:%s关键字:%d个查找长度为:%d的”HashList [J]。PY,S0,总和);
G = 1;
}
},(G == 0);
}
}
/ * -------------------- ------------展览哈萨克斯坦希腊表---------------------------- * /
无效显示()
{
的printf(“\ n \ n已地址\吨关键字\ T \ T查找长度\ TH(键)\ T \吨拼音\ N”); / /显示格式 BR p(INT I = 0; 15; + +)
{
的printf(“%d的”,I);
的printf(“\吨%D“HashList [I] K);
的printf(”\ T \ T%D“,HashList [I] SI);
的printf(”\ T \ T%D“ (HashList [I] K)%M);
的printf(“\%”,HashList的[]。PY);
的printf(“\ N”);
}
的printf(“按任意键继续显示... \ N”); / /由于数据较多,所以分屏显示(Win9x/DOS仍然可以看到所有的数据)
用getchar();
(I = 15; 30; i + +)
{
的printf(“%d”处,I);
printf的(“\ T%D”,HashList [I],K);
的printf(“\ T \ T%D”,HashList [I] SI);
的printf(“\ T \ T%D“(HashList [I] K)%M);
的printf(”\%“,HashList的[I]。PY);
的printf(”\ N“)
}
的printf(“按任意键继续呈现... \ N”);
的getchar的();
(I = 30; I 40 +)
{
的printf(“%d的”,哈希表java代码我);
的printf(“\吨为%d”,HashList [I],K); /的printf(“\ T \ T%D”,HashList [I] SI);
的printf(“\ T \ T%D”(HashList [I] K)%M); /的printf(“\%”,HashList [I] PY);
的printf(“\”);
}
的printf(“按任意键继续呈现... \ N“);
的getchar的();
(I = 40; 50; + +)
{
的printf(”为%d“,I);
的printf(”\吨为%d“,HashList [I] K)
的printf(”\ T \ T%D“,HashList [I] SI) ;
的printf(“\吨\ T为%d”,(HashList [I],K)%M);
的printf(“\%”,HashList的[]。PY); BR /的printf(“\ N”);
}
浮法平均= 0;
(= 0; NAME_NO; + +)BR /平均+ = HashList [I]。 SI;
/ = NAME_NO;
的printf(“\ N \ N平均查找长度:ASL(%D)=%f \ N \ N”,NAME_NO平均);
}
/ * --------------------------------主要功能------ ---------------------- * /
无效的主要()
{
/ * :: SetConsoleTitle(“哈希表操作“)/ / Windows API函数,设置控制台窗口标题
手柄HCON = :: GetStdHandle(STD_OUTPUT_HANDLE); / /得到标准输出设备处理
:: SetConsoleTextAttribute(HCON,10 | 0 )/ /设置文本颜色
* /
的printf(“\ N ------------------------哈希表的创建查找----------------------“);
InitNameList();
CreateHashList();
(1)
{
的printf(“\ N \ N”);
的printf(“1。显示哈希表\”);
printf(“请2查找\ N“);
的printf(”3。退出\ n“);
错误:
字符CH1 =的getchar的();
(CH1 = '1')
显示();
其他(CH1 = '2')
FindList();
其他(CH1 = '3')返回;
其他
{
的printf(“\ n请输入正确的选择!”);
转到犯错;
}
} }
哈希表java代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于哈希表 java、哈希表java代码的信息别忘了在本站进行查找喔。






