Advertisement
Guest User

Untitled

a guest
Nov 14th, 2020
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.67 KB | None | 0 0
  1. Grouping.java
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.FileReader;
  5. import java.io.IOException;
  6. import java.util.ArrayList;
  7. import java.util.HashMap;
  8. import java.util.Iterator;
  9. import java.util.List;
  10. import java.util.Map;
  11. import java.util.Scanner;
  12. import java.util.Set;
  13.  
  14. public class Grouping {
  15.  
  16. public static void main(String[] args) {
  17.  
  18. // create new array list to store values from txt file
  19. List<String> fileList = new ArrayList<String>();
  20.  
  21. // create map to group image and category
  22. Map<String, String[]> groupMap = new HashMap<String, String[]>();
  23.  
  24. // reate list to add all images in a perticular catogory(result)
  25. List<String> resultList = new ArrayList<>();
  26.  
  27. // create scanner to accept input from user
  28. Scanner scanner = new Scanner(System.in);
  29.  
  30. // call to method to read txt file
  31. fileList = readFromFile();
  32.  
  33. // print file content in console
  34. for (String str : fileList) {
  35. System.out.println(str);
  36. }
  37.  
  38. // call method to group image in map
  39. groupMap = groupList(fileList);
  40.  
  41. System.out.println("/n/n");
  42.  
  43. // ask user for input
  44. System.out.println("What would you like to search for ?\n");
  45.  
  46. // store user input
  47. String searchstr = scanner.nextLine();
  48.  
  49. // call method to search user input
  50.  
  51. resultList = searchImage(searchstr, groupMap);
  52.  
  53. // print result images in list
  54. for (String s : resultList) {
  55. System.out.println(s);
  56. }
  57.  
  58. }
  59. // method to search category to get image name
  60. private static List<String> searchImage(String searchstr, Map<String, String[]> groupMap) {
  61. String[] searchFor;
  62. List<String> resultList = new ArrayList<>();
  63. if (searchstr.toUpperCase().contains("OR")) {
  64. searchFor = searchstr.toUpperCase().split(" OR ");
  65. if (searchFor.length > 2) {
  66. System.out.println("Invalid search");
  67. }
  68. for (String s1 : searchFor) {
  69. for (String key : groupMap.keySet()) {
  70. String[] values = groupMap.get(key);
  71. for (String s : values) {
  72. if (s1.toUpperCase().equals(s.toUpperCase())) {
  73. resultList.add(key);
  74. }
  75. }
  76. }
  77. }
  78.  
  79. } else if (searchstr.toUpperCase().contains("AND")) {
  80.  
  81. searchFor = searchstr.toUpperCase().split(" AND ");
  82. if (searchFor.length > 2) {
  83. System.out.println("Invalid search");
  84. }
  85.  
  86. int count = 0;
  87. for (String key : groupMap.keySet()) {
  88. String[] values = groupMap.get(key);
  89. for (String s : values) {
  90. if (searchFor[0].toUpperCase().equals(s.toUpperCase())) {
  91. count++;
  92.  
  93. }
  94. if (searchFor[1].toUpperCase().equals(s.toUpperCase())) {
  95. count++;
  96. }
  97. if (count == 2) {
  98. resultList.add(key);
  99. }
  100. }
  101.  
  102. }
  103.  
  104. } else {
  105. for (String key : groupMap.keySet()) {
  106. String[] values = groupMap.get(key);
  107. for (String s : values) {
  108. if (searchstr.toUpperCase().equals(s.toUpperCase())) {
  109. resultList.add(key);
  110. }
  111. }
  112. }
  113. }
  114. return resultList;
  115.  
  116. }
  117. // method to read values from txt file and store to list
  118. public static List<String> readFromFile() {
  119. List<String> fileList = new ArrayList<String>();
  120. BufferedReader reader;
  121. try {
  122. reader = new BufferedReader(new FileReader("test.txt"));
  123. String line = reader.readLine();
  124. while (line != null) {
  125.  
  126. // read next line
  127. fileList.add(line);
  128. line = reader.readLine();
  129. }
  130. reader.close();
  131. } catch (IOException e) {
  132. e.printStackTrace();
  133. }
  134. return fileList;
  135. }
  136. // method to group images in txt file to map . in map, image as key and category as array of values
  137.  
  138. public static Map<String, String[]> groupList(List<String> fileList) {
  139. Map<String, String[]> groupMap = new HashMap<String, String[]>();
  140. for (String str : fileList) {
  141. String[] words = str.split(" ");
  142. String[] keys = new String[words.length - 1];
  143. for (int i = 0; i < words.length - 1; i++) {
  144. keys[i] = words[i + 1];
  145. groupMap.put(words[0], keys);
  146. }
  147. }
  148. return groupMap;
  149. }
  150.  
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement