Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.51 KB | None | 0 0
  1. /*
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package javaapplication10;
  7.  
  8. /**
  9. *
  10. * @author RamonGaming
  11. */
  12. public class DelegateHash implements IDelegateDB {
  13. private Delegate[] table;
  14. private static int tableSize = 10;
  15. private int numEntries;
  16. private double loadFactor;
  17. private int pSize;
  18. private boolean changed = false;
  19.  
  20.  
  21. public DelegateHash() {
  22. System.out.println("Simple sequence");
  23. table = new Delegate[tableSize];
  24. clearDB();
  25. }
  26. public void clearDB() {
  27. numEntries = 0;
  28. }
  29.  
  30. public int loadFactor(){
  31. double ent = numEntries;
  32. double tsize = tableSize;
  33. changed = true;
  34. loadFactor = (ent / tsize) * 10;
  35. if (loadFactor > 50){
  36. loadFactorChange();
  37. loadFactor = (ent / tsize) * 10;
  38. }
  39. return(int)loadFactor;
  40.  
  41. }
  42.  
  43. public void log(){
  44. System.out.println(tableSize);
  45. System.out.println(numEntries);
  46. System.out.println(loadFactor);
  47. System.out.println();
  48. System.out.println(tableSize);
  49. System.out.println(tableSize);
  50. if (changed = true){
  51. System.out.println("Previous array size:" + pSize);
  52. }
  53.  
  54.  
  55. }
  56.  
  57. @Override
  58. public boolean containsName(String name) {
  59. int pos = hashFunction(name);
  60. return table[pos] != null && table[pos].getName().equals(name) && table[pos].getName() != null;
  61. }
  62.  
  63. @Override
  64. public Delegate get(String name) {
  65. for(Delegate d: table){
  66. if(containsName(name)){
  67. return d;
  68. }
  69. }
  70. return null;
  71.  
  72. }
  73.  
  74. public void loadFactorChange(){
  75. Delegate[] temp = new Delegate[tableSize];
  76. int c = 0;
  77. pSize = tableSize;
  78. changed = true;
  79.  
  80. for (Delegate d: table){
  81. if (d != null && d.getName() != null){
  82. temp[c] = d;
  83. c++;
  84. }
  85. }
  86. tableSize = tableSize * 2;
  87. table = new Delegate[tableSize];
  88. for(Delegate d: temp){
  89. if (d != null){
  90. put(d);
  91. }
  92.  
  93.  
  94. }
  95. }
  96.  
  97.  
  98. @Override
  99. public int size() {
  100. int c = 0;
  101.  
  102. for(Delegate d: table){
  103. if(d != null && d.getName() != null){
  104. c++;
  105. }
  106. }
  107. System.out.println(c);
  108. return c;
  109.  
  110. }
  111.  
  112.  
  113. @Override
  114. public boolean isEmpty() {
  115. return size() == 0;
  116. }
  117.  
  118. /*private int findPos(String name) {
  119. // returns position where name is, or would go
  120. assert name != null && !name.equals("");
  121.  
  122. int left = 0, right = numEntries;
  123. while (left != right) {
  124. int mid = (left + right)/2;
  125. if (name.compareTo(table[mid].getName()) > 0) left = mid + 1;
  126. else right = mid;
  127. }
  128. return left; // or right, since left == right
  129. */
  130.  
  131.  
  132.  
  133. @Override
  134. public Delegate put(Delegate delegate) {
  135. assert delegate != null;
  136. assert delegate.getName() != null && !delegate.getName().equals("");
  137.  
  138. String name = delegate.getName();
  139. int pos = hashFunction(name);
  140. int i = 0;
  141.  
  142. while (pos < tableSize && table[pos] != delegate){
  143. if (table[pos] == null){
  144. table[pos] = delegate;
  145. numEntries++;
  146. }
  147. else if (numEntries > 0 && containsName(name)){
  148. Delegate previous = table[pos];
  149. table[pos] = delegate;
  150. return previous;
  151. }
  152. else{
  153. pos = quadprobing(pos, i);
  154. i++;
  155. }
  156. }
  157. return null;
  158. }
  159.  
  160.  
  161. /*assert numEntries != tableSize; // very simple
  162. assert delegate != null;
  163. String name = delegate.getName();
  164. assert name != null && !name.equals("");
  165.  
  166. // assertions as before
  167.  
  168. Delegate previous;
  169. int pos = hashFunction(name);
  170. if (pos == numEntries || !name.equals(table[pos].getName())) {// new
  171. int i = numEntries;
  172. while (i != pos) { // ‘budging up’ to keep the table ordered
  173. table[i] = table[i-1]; i--;
  174. }
  175. numEntries++;
  176. previous = null;
  177. } else {
  178. previous = table[pos];
  179. }
  180. table[pos] = delegate;
  181. return previous;*/
  182.  
  183.  
  184. /**
  185. * Removes and returns a delegate from the database, with the key
  186. * the supplied name.
  187. * @param name The name (key) to remove.
  188. * @pre name not null or empty string
  189. * @return the removed delegate object mapped to the name, or null if
  190. * the name does not exist.
  191. */
  192. @Override
  193. public Delegate remove(String name){
  194. Delegate temporary = new Delegate();
  195. int pos = hashFunction(name);
  196. int i = 0;
  197.  
  198. while (pos < tableSize ){
  199. if (table[pos].getName().equals(name)){
  200. Delegate remove = new Delegate();
  201. remove = table[pos];
  202. table[pos] = temporary;
  203. numEntries--;
  204. return remove;
  205. }
  206. else{
  207. pos = quadprobing(pos, i);
  208. i++;
  209. }
  210. }
  211.  
  212. return null;
  213.  
  214.  
  215. }
  216.  
  217. /*Delegate empty = new Delegate();
  218. int pos = hashFunction(name);
  219.  
  220. for(Delegate d: table){
  221. if(containsName(name)){
  222. table[pos] = empty;
  223. numEntries--;
  224. return d;
  225.  
  226. }
  227. }
  228. return null;
  229. }*/
  230.  
  231. /*
  232. System.out.println("delete " + name);
  233. int pos = hash(name);
  234. System.out.println(name + " hashes to " + pos);
  235. pos = probe(pos, name);
  236. System.out.println("linear probing stops at "+ pos);
  237. if (table[pos] == null) {
  238. System.out.println(name + " not found");
  239. } else {// table[pos].equals(name)
  240. System.out.println(name + " found at " + pos);
  241. System.out.println("setting table at " + pos + " to null");
  242. table[pos] = null; // WRONG!
  243. size--;
  244. }
  245. */ /*delete */
  246.  
  247.  
  248.  
  249. public int hashFunction(String name){
  250. return ((int)(name.charAt(0)) + 1) % tableSize;
  251. }
  252.  
  253.  
  254. public int quadprobing(int pos, int i){
  255. return (pos + (i * i)) % tableSize;
  256. }
  257.  
  258. /*public int quadraticProbing(int newIndex, int i) {
  259. return (newIndex + (i*i)); // taken away / SIZE
  260. }*/
  261.  
  262.  
  263. /**
  264. * Prints the names and IDs of all the delegates in the database in
  265. * alphabetic order.
  266. * @pre true
  267. */
  268. @Override
  269. public void displayDB() {
  270. int c = 0;
  271. for(Delegate d: table){
  272. if(d != null && d.getName() != null){
  273. System.out.println(d.getName());
  274. System.out.println(d.getAffiliation());
  275. c++;
  276. }
  277. }
  278. if(c == 0){
  279. System.out.println("Table is empty!");
  280. }
  281.  
  282.  
  283.  
  284.  
  285. }
  286. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement