国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看

合肥生活安徽新聞合肥交通合肥房產生活服務合肥教育合肥招聘合肥旅游文化藝術合肥美食合肥地圖合肥社保合肥醫院企業服務合肥法律

代寫CS 61B、java設計編程代做

時間:2024-04-17  來源:合肥網hfw.cc  作者:hfw.cc 我要糾錯



Lab 08: Hashmaps | CS 61B Spring 2024
 1/9
CS 61B
Labs / Lab 08: Hashmaps
The FAQ for this lab can be found here.
In this lab, you?ll work on MyHashMap , a hashtable-based implementation of the Map61B
interface. This will be very similar to Lab 06, except this time we?re building a HashMap rather
than a TreeMap .
After you?ve completed your implementation, you?ll compare the performance of your
implementation to a list-based Map implementation ULLMap as well as the built-in Java
HashMap class (which also uses a hash table). We?ll also compare the performance of
MyHashMap when it uses different data structures to be the buckets.
We?ve created a class MyHashMap in MyHashMap.java , with very minimal starter code. Your
goal is to implement all of the methods in the Map61B interface from which MyHashMap
inherits, except remove , keySet and iterator (optional for Lab 08). For these, feel free to
throw an UnsupportedOperationException .
Note that your code will not compile until you implement all the methods of Map61B . You can
implement methods one at a time by writing the method signatures of all the required
methods, but throwing UnsupportedOperationException s for the implementations until you
get around to actually writing them.
The following is a quick animation of how a hash table works. N refers to the number of items
in the hash table, and M refers to the number of buckets.
We use an object?s hashCode modulo?d (%) by the number of buckets to determine which
bucket the object (represented by a shape) falls into. When the load factor is reached, we
Lab 08: Hashmaps
FAQ
Introduction
MyHashMap
Overview
Refresher Animation
Lab 08: Hashmaps | CS 61B Spring 2024
 2/9
multiply the number of buckets by the resizing factor and rehash all of the items, modulo-ing
them by the new number of buckets.
For the video animation below, the hash function is arbitrary and outputs a random integer for
each shape (the object) that is inputted.
Quick Hashing Animation
Credits to Meshan Khosla for this animation!
You might recall from lecture that when we build a hash table, we can choose a number of
different data structures to be the buckets. The classic approach is to choose a LinkedList .
But we can also choose ArrayList s, TreeSet s, or even other crazier data structures like
PriorityQueue s or even other HashSet s!
Skeleton Code
Lab 08: Hashmaps | CS 61B Spring 2024
 3/9
During this lab, we will try out hash tables with different data structures for each of the
buckets, and see empirically if there is an asymptotic difference between using different data
structures as hash table buckets.
For this lab, we will be trying out LinkedList , ArrayList , HashSet , Stack , and
ArrayDeque (unfortunately, no TreeSet or PriorityQueue like the diagram above shows due
to excessive boilerplate, though you?re welcome to try it if you?d like). That?s a lot of classes!
You can imagine that if we implemented MyHashMap without much care, it would take a lot of
effort with Find + Replace to be able to change out the bucket type with a different bucket
type. For example, if we wanted to change all our ArrayList buckets to LinkedList buckets,
we would have to Find + Replace for all occurrences of ArrayList and replace that with
LinkedList . This is not ideal - for example, we may have a non-bucket component that relies
on some ArrayList methods. We wouldn?t want to ruin our code by changing that to a
LinkedList !
The purpose of the starter code is to have an easier way to try out different bucket types with
MyHashMap . It accomplishes this through polymorphism and inheritance, which we learned
about earlier this semester. It also makes use of factory methods and classes, which are
utility code used to create objects. This is a common pattern when working with more
advanced code, though the details are out-of-scope for 61B.
MyHashMap implements the Map61B interface through use of a hash table. In the starter code,
we give the instance variable private Collection<Node>[] buckets , which is the underlying
data structure of the hash table. Let?s unpack what this code means:
buckets is a private variable in the MyHashMap class.
It is an array (or table) of Collection<Node> objects, where each Collection of Node s
represents a single bucket in the hash table
Node is a private (nested) helper class we give that stores a single key-value mapping. The
starter code for this class should be straightforward to understand, and should not require
any modification.
?
private Collection<Node>[] buckets;
Copy
?
?
protected class Node {
K key;
V value;
Node(K k, V v) {
key = k;
value = v;
Copy
Lab 08: Hashmaps | CS 61B Spring 2024
 4/9
java.util.Collection is an interface which most data structures inherit from, and it
represents a group of objects. The Collection interface supports methods such as add ,
remove , and iterator . Many data structures in java.util implement Collection ,
including ArrayList , LinkedList , TreeSet , HashSet , PriorityQueue , and many
others. Note that because these data structures implement Collection , we can assign
them to a variable of static type Collection with polymorphism.
Therefore, our array of Collection<Node> objects can be instantiated by many different
types of data structures, e.g. LinkedList<Node> or ArrayList<Node> . Make sure your
buckets generalize to any Collection! See the below warning for how to do this.
When creating a new Collection<Node>[] to store in our buckets variable, be aware that
in Java, you cannot create an array of parameterized type. Collection<Node> is a
parameterized type, because we parameterize the Collection class with the Node class.
Therefore, Java disallows new Collection<Node>[size] , for any given size . If you try to
do this, you will get a   Generic array creation   error.
WARNING
To get around this, you should instead create a new Collection[size] , where size is
the desired size.
The elements of a Collection[] can be a collection of any type, like a
Collection<Integer> or a Collection<Node> . For our purposes, we will only add
elements of type Collection<Node> to our Collection[] .
The mechanism by which different implementations of the hash table implement different
buckets is through a factory method protected Collection<Node> createBucket() , which
simply returns a Collection . For MyHashMap.java , you can choose any data structure you?d
like. For example, if you choose LinkedList , the body of createBucket would simply be:
WARNING
Instead of creating new bucket data structures with the new operator, you must use
the createBucket method instead. This might seem useless at first, but it allows our
factory classes to override the createBucket method in order to provide different data
structures as each of the buckets.
}
}
?
?
?
?
protected Collection<Node> createBucket() {
return new LinkedList<>();
}
Copy
Lab 08: Hashmaps | CS 61B Spring 2024
 5/9
In MyHashMap , you can just have this method return a new LinkedList or ArrayList .
You should implement the following constructors:
Some additional requirements for MyHashMap are below:
Your hash map should initially have a number of buckets equal to initialCapacity . You
should increase the size of your MyHashMap when the load factor exceeds the maximum
loadFactor threshold. Recall that the current load factor can be computed as
loadFactor = N/M , where N is the number of elements in the map and M is the number
of buckets. The load factor represents the amount of elements per bucket, on average. If
initialCapacity and loadFactor aren?t given, you should set defaults initialCapacity
= 16 and loadFactor = 0.75 (as Java?s built-in HashMap does).
You should handle collisions with separate chaining. You should not use any libraries other
than the bucket classes, Collection , Iterator , Set , and HashSet . For more detail on
how you should implement separate chaining, see the Skeleton Code section above.
Because we use a Collection<Node>[] for our buckets , when implementing MyHashMap ,
you are restricted to using methods that are specified by the Collection interface. When
you are searching for a Node in a Collection , iterate over the Collection , and find
the Node whose key is .equals() to the desired key.
If the same key is inserted more than once, the value should be updated each time (i.e., no
Node s should be added). You can assume null keys will never be inserted.
When resizing, make sure to multiplicatively (geometrically) resize, not additively
(arithmetically) resize. You are not required to resize down.
MyHashMap operations should all be constant amortized time, assuming that the hashCode
of any objects inserted spread things out nicely (recall: every Object in Java has its own
hashCode() method).
hashCode() can return a negative value! Java?s modulo operator % will return a negative
value for negative inputs, but we need to send items to a bucket in the range . There are
a myriad of ways to handle this:
Implementation Requirements
public MyHashMap();
public MyHashMap(int initialCapacity);
public MyHashMap(int initialCapacity, double loadFactor);
Copy
?
?
?
?
?
?
[0, M)
(Recommended) You can use Math.floorMod() in place of % for the modulo operation.
This has a non-negative range of values, similar to Python?s modulo.
1
Lab 08: Hashmaps | CS 61B Spring 2024
 6/9
TASK
Complete the MyHashMap class according to the specifications in Map61B and the
guidelines above.
You may find the following resources useful
Lecture slides:
Lecture 19
Lecture 20
The following may contain antiquated code or use unfamiliar techniques, but should still be
useful:
ULLMap.java (provided), a working unordered linked list based Map61B implementation
You can test your implementation using TestMyHashMap.java . Some of the tests are quite
tricky and do weird stuff we haven?t learned in 61B. The comments will prove useful to see
what the tests are actually doing.
If you?ve correctly implemented generic Collection buckets, you should also be passing the
tests in TestMyHashMapBuckets.java . The TestMyHashMapBuckets.java file simply calls
methods in TestMyHashMap.java for each of the different map subclasses that implement a
different bucket data structure. Make sure you?ve correctly implemented MyHashMap using the
factory methods provided (i.e., createBucket ) for TestHashMapBuckets.java to pass.
If you choose to implement the additional remove , keySet , and iterator methods, we
provide some tests in TestHashMapExtra.java .
If the resulting value after the % operation is negative, you can add the size of the array to
it.
2
You can use the Math.abs() function to convert the negative value to a positive value.
Note that , , and are not equivalent in general! We?re just
using the modulo operation here to make sure we have a valid index. We don?t necessarily
care too much about the exact bucket the item goes into, because a good hash function
should spread things out nicely over positive and negative numbers.
3
 Ox O mod m  Ox mod m O x mod m
Option (3) but with a bitmask (don?t worry if you don?t know what this means). This is out?of-scope for 61B, but some of the resources do this, which is why we?ve put it here.
4
Resources
?
?
?
?
Testing
Lab 08: Hashmaps | CS 61B Spring 2024
 7/9
There are two interactive speed tests provided in InsertRandomSpeedTest.java and
InsertInOrderSpeedTest.java . Do not attempt to run these tests before you?ve completed
MyHashMap . Once you?re ready, you can run the tests in IntelliJ.
The InsertRandomSpeedTest class performs tests on element-insertion speed of your
MyHashMap , ULLMap (provided), and Java?s built-in HashMap. It works by asking the user for
an input size N , then generates N Strings of length 10 and inserts them into the maps as
<String, Integer> pairs.
Try it out and see how your data structure scales with N compared to the naive and industrial?strength implementations. Record your results in the provided file named src/results.txt .
There is no standard format required for your results, and there is no required number of data
points. We expect you to write at least a sentence or two with your observations, though.
Now try running InsertInOrderSpeedTest , which behaves similarly to
InsertRandomSpeedTest , except this time the String s in <String, Integer> key-value
pairs are inserted in lexicographically-increasing order. Your code should be in the rough
ballpark of Java?s built in solution  C say, within a factor of 10 or so. What this tells us is that
state-of-the-art HashMaps are relatively easy to implement compared to state-of-the-art
TreeMaps . Consider this relation with BSTMap / TreeMap and other data structures - are there
certain instances where a Hashmap might be better? Discuss this with your peers, and add
your answer to results.txt .
If you?ve correctly implemented generic Collection buckets, most of the work is done! We
can directly compare the different data structures used to implement buckets. We provide
speed/BucketsSpeedTest.java , which is an interactive test that queries the user for an
integer L for the length of string to use on subsequent operations. Then, in a loop, it queries
the user for an integer N , and runs a speed test on your MyHashMap using different types of
buckets.
Try it out and compare how the different implementations scale with N . Discuss your results
with your peers, and record your responses in results.txt .
You might notice that our implementation using HashSet s as buckets searches for a Node by
iterating over the entire data structure. But we know hash tables support more efficient
lookups than that. Would our hash table speed up asymptotically if we were able to use a
constant-time search over the HashSet ? You do not need to implement anything new here,
just discuss with your peers, and record your ideas in results.txt .
Speed Testing
Different Bucket Types
Lab 08: Hashmaps | CS 61B Spring 2024
 8/9
TASK
Run the above speed tests in the speed directory and record your results in
results.txt .
The lab is out of 5 points. There is one hidden test on Gradescope (that checks your
results.txt ). The rest of the tests are local. If you pass all the local tests and fill out the
results.txt file sufficiently, you will get full credit on Gradescope.
Each of the following is worth points and corresponds to a unit test:
Generics
clear
containsKey
get
size
put
Functionality
Resizing
Edge cases
Buckets (all of TestMyHashMapBuckets )
results.txt (not tested locally, but on the Gradescope autograder)
As mentioned, if you are not implementing the optional exercises, throw an
UnsupportedOperationException , like below:
Just as you did for the previous assignments, add, commit, then push your Lab 08 code to
GitHub. Then, submit to Gradescope to test your code.
These will not be graded, but you can still receive feedback with the given tests.
Implement the methods remove(K key) and remove(K key, V value) , in your MyHashMap
class. For an extra challenge, implement keySet() and iterator() without using a second
Deliverables and Scoring

throw new UnsupportedOperationException();
Copy
Submission
Optional Exercises
Lab 08: Hashmaps | CS 61B Spring 2024
 9/9
instance variable to store the set of keys.
For remove , you should return null if the argument key does not exist in the MyHashMap .
Otherwise, delete the key-value pair (key, value) and return the associated value.

請加QQ:99515681  郵箱:99515681@qq.com   WX:codinghelp














 

掃一掃在手機打開當前頁
  • 上一篇:申請菲律賓簽證需要提供護照嗎 哪些材料可以辦理旅游簽
  • 下一篇:COMP3411代做、python語言程序代寫
  • 無相關信息
    合肥生活資訊

    合肥圖文信息
    流體仿真外包多少錢_專業CFD分析代做_友商科技CAE仿真
    流體仿真外包多少錢_專業CFD分析代做_友商科
    CAE仿真分析代做公司 CFD流體仿真服務 管路流場仿真外包
    CAE仿真分析代做公司 CFD流體仿真服務 管路
    流體CFD仿真分析_代做咨詢服務_Fluent 仿真技術服務
    流體CFD仿真分析_代做咨詢服務_Fluent 仿真
    結構仿真分析服務_CAE代做咨詢外包_剛強度疲勞振動
    結構仿真分析服務_CAE代做咨詢外包_剛強度疲
    流體cfd仿真分析服務 7類仿真分析代做服務40個行業
    流體cfd仿真分析服務 7類仿真分析代做服務4
    超全面的拼多多電商運營技巧,多多開團助手,多多出評軟件徽y1698861
    超全面的拼多多電商運營技巧,多多開團助手
    CAE有限元仿真分析團隊,2026仿真代做咨詢服務平臺
    CAE有限元仿真分析團隊,2026仿真代做咨詢服
    釘釘簽到打卡位置修改神器,2026怎么修改定位在范圍內
    釘釘簽到打卡位置修改神器,2026怎么修改定
  • 短信驗證碼 豆包網頁版入口 破天一劍 目錄網 排行網

    關于我們 | 打賞支持 | 廣告服務 | 聯系我們 | 網站地圖 | 免責聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 hfw.cc Inc. All Rights Reserved. 合肥網 版權所有
    ICP備06013414號-3 公安備 42010502001045

    国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看
    国产综合香蕉五月婷在线| 精品国产区一区二区三区在线观看| 国产又大又硬又粗| 91精品久久久久久久久久另类| 久久精品国产精品| 亚洲欧洲日产国码无码久久99| 男女猛烈激情xx00免费视频| 91精品国产91久久久久久| 国产精品毛片a∨一区二区三区|国| 九九热精品视频国产| 无码内射中文字幕岛国片| 欧美伊久线香蕉线新在线| 草b视频在线观看| 久久久国产视频| 亚洲v日韩v综合v精品v| 精品少妇人欧美激情在线观看| 国产成人精品免费久久久久| 一区二区免费在线观看| 国产在线观看不卡| 久久视频在线看| 日本不卡一区二区三区在线观看| 逼特逼视频在线| 欧美激情亚洲一区| 国产在线播放91| 久久婷婷国产麻豆91天堂| 日本精品一区二区三区在线播放视频| 官网99热精品| 欧美精品久久久久a| 国产亚洲欧美另类一区二区三区| 久久久99免费视频| 欧日韩不卡在线视频| 久久99国产精品99久久| 天天久久人人| 久久久女人电视剧免费播放下载| 中文字幕综合在线观看| 国产人妻人伦精品| 精品乱码一区二区三区| 国产香蕉一区二区三区| 国产精品久久久久久久久久免费| 欧美性天天影院| 国产极品粉嫩福利姬萌白酱| 亚洲欧洲在线一区| 91高跟黑色丝袜呻吟在线观看| 亚洲高清在线观看一区| 免费看黄色a级片| 国产精品网站免费| 欧美高清视频一区| 久久久久久香蕉网| 亚洲精品一区二区三区蜜桃久 | 蜜桃91精品入口| 国产精品美女呻吟| 欧美一区三区二区在线观看| 国产精品视频网| 精品一区久久久久久| 国产精品美女在线观看| 国产性生活免费视频| 亚洲一区二区精品在线| 国产精品ⅴa在线观看h| 欧美一级视频在线播放| 日韩中文字幕网址| 精品一区久久| 亚洲人久久久| 久久久久中文字幕2018| 虎白女粉嫩尤物福利视频| 九九精品在线播放| 99免费在线观看视频| 九九精品在线视频| 分分操这里只有精品| 亚洲人成网站在线观看播放| 国产二区一区| 狠狠爱一区二区三区| 成人97在线观看视频| 99色精品视频| 欧美中文字幕在线观看| 国产精品久久久影院| 波多野结衣久草一区| 人人妻人人澡人人爽欧美一区双| 国产精品久久久久7777婷婷| 成人免费在线网| 日韩久久不卡| 国产999在线观看| 成人国产精品色哟哟| 日韩欧美三级一区二区| 国产精品成人国产乱一区| 91九色国产社区在线观看| 欧美专区国产专区| 久久亚洲精品小早川怜子66| 高清视频一区| 亚洲国产精品久久久久爰色欲| 久久免费视频在线| 日本国产在线播放| 欧美xxxx14xxxxx性爽| 国产福利成人在线| 国产免费高清一区| 日韩精品极品视频在线观看免费| 国产精品久久久久免费a∨大胸| 麻豆av一区二区| 日韩在线综合网| 欧美激情精品久久久久久变态| 久久久久中文字幕| 成人黄动漫网站免费| 欧美久久在线| 亚洲va久久久噜噜噜久久天堂| 国产精品手机视频| 国产精品27p| 国产三区二区一区久久| 日韩人妻一区二区三区蜜桃视频| 精品免费日产一区一区三区免费 | 91精品久久久久久久久久久久久久| 日韩免费在线观看视频| 久久99久久99精品免观看粉嫩 | 欧美一区免费视频| 亚洲伊人久久综合| 久久久精品美女| 久青草视频在线播放| 国产女大学生av| 加勒比成人在线| 日韩精品一区在线视频| 亚洲制服欧美久久| 色综合久综合久久综合久鬼88 | 国产成人精品视频在线观看| 91精品国产高清自在线| 国产在线一区二区三区| 人人妻人人澡人人爽精品欧美一区| 亚洲一区亚洲二区| 国产精品免费视频xxxx| 国产激情美女久久久久久吹潮| 国产一区二区中文字幕免费看| 热久久这里只有| 日本精品免费一区二区三区| 亚洲色婷婷久久精品av蜜桃| 久久综合伊人77777| 久久天天躁狠狠躁夜夜av| 国产国产精品人在线视| 国产精品999999| 97精品在线视频| 成人精品水蜜桃| 国产精品一区av| 国产免费成人在线| 国产精品自产拍在线观| 国产日韩欧美电影在线观看| 国产在线精品自拍| 黄色片久久久久| 日韩精品 欧美| 日韩美女免费线视频| 日韩人妻精品一区二区三区 | 久久久久久久色| 久久久久久亚洲精品不卡4k岛国| 国产成人亚洲综合| 久久久噜噜噜久久中文字免| 日韩亚洲一区二区| 日韩视频免费看| 国产精品沙发午睡系列| 国产精品欧美久久| 国产精品嫩草影院久久久| 久久久精品影院| 久久天天躁狠狠躁夜夜av| 国产精品久久久久久久7电影| 久久精彩免费视频| 久久精品美女| 国产成人免费91av在线| 国产精品免费观看久久| 国产精品福利在线| 国产99视频在线观看| 一区二区三区精品国产| 无码人妻h动漫| 欧美一区三区二区在线观看| 激情小说综合网| 欧美在线亚洲在线| 欧美深夜福利视频| 欧美日韩一区二| 欧美不卡在线一区二区三区| 国产中文字幕91| 国产精品亚洲视频在线观看| 91看片淫黄大片91| 久草免费福利在线| 国产精品美女久久久久久免费| 国自在线精品视频| 国产精品久久久久77777| 中文字幕日本最新乱码视频| 无码人妻精品一区二区蜜桃网站| 欧美中文字幕视频| 国产伦精品一区二区三区四区视频| 69久久夜色精品国产69乱青草| www亚洲欧美| 亚洲人久久久| 蜜桃视频一区二区在线观看| 久久亚洲精品欧美| 久久九九亚洲综合| 一区二区三区四区国产| 日韩久久久久久久| 成人久久精品视频| 国产精品毛片一区视频| 色女人综合av| 隔壁老王国产在线精品| 国产精品爽爽爽爽爽爽在线观看| 亚洲 日韩 国产第一区| 国产一区二区三区免费不卡 | 日韩免费在线视频| 成人av播放|