From d5bc2a4e5f24282a64a8aad0779e5bf5694b2dea Mon Sep 17 00:00:00 2001 From: megha Date: Wed, 24 Jan 2024 17:46:28 +0530 Subject: [PATCH] JSON in Java Code Examples --- .idea/.gitignore | 3 + .idea/Java-Code-Snippets.iml | 9 ++ .idea/compiler.xml | 13 ++ .idea/jarRepositories.xml | 20 +++ .idea/misc.xml | 15 ++ .idea/modules.xml | 8 ++ .idea/vcs.xml | 6 + JsonBasics/pom.xml | 33 +++++ JsonBasics/src/main/java/JsonExample.java | 83 +++++++++++ JsonBasics/src/main/java/Person.java | 30 ++++ JsonBasics/target/classes/JsonExample$1.class | Bin 0 -> 478 bytes JsonBasics/target/classes/JsonExample.class | Bin 0 -> 3775 bytes JsonBasics/target/classes/Person.class | Bin 0 -> 817 bytes LambdasAndStreams/target/classes/Person.class | Bin 0 -> 1656 bytes .../target/classes/README-Streams.md | 57 ++++++++ .../classes/StreamsAllCodeSolutions.class | Bin 0 -> 7386 bytes .../target/classes/StreamsCodePart2 | 136 ++++++++++++++++++ .../classes/StreamsTenPracticeQuestions.class | Bin 0 -> 424 bytes .../Screenshot 2023-07-27 at 11.07.16 PM.png | Bin 0 -> 67963 bytes 19 files changed, 413 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/Java-Code-Snippets.iml create mode 100644 .idea/compiler.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 JsonBasics/pom.xml create mode 100644 JsonBasics/src/main/java/JsonExample.java create mode 100644 JsonBasics/src/main/java/Person.java create mode 100644 JsonBasics/target/classes/JsonExample$1.class create mode 100644 JsonBasics/target/classes/JsonExample.class create mode 100644 JsonBasics/target/classes/Person.class create mode 100644 LambdasAndStreams/target/classes/Person.class create mode 100644 LambdasAndStreams/target/classes/README-Streams.md create mode 100644 LambdasAndStreams/target/classes/StreamsAllCodeSolutions.class create mode 100644 LambdasAndStreams/target/classes/StreamsCodePart2 create mode 100644 LambdasAndStreams/target/classes/StreamsTenPracticeQuestions.class create mode 100644 LambdasAndStreams/target/classes/assets/Screenshot 2023-07-27 at 11.07.16 PM.png diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/Java-Code-Snippets.iml b/.idea/Java-Code-Snippets.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/Java-Code-Snippets.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..ad04d8c --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..acf27cb --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,15 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..c311054 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/JsonBasics/pom.xml b/JsonBasics/pom.xml new file mode 100644 index 0000000..3af3f0a --- /dev/null +++ b/JsonBasics/pom.xml @@ -0,0 +1,33 @@ + + + 4.0.0 + + com.example + JsonBasics + 1.0-SNAPSHOT + + + + com.fasterxml.jackson.core + jackson-databind + 2.13.0 + + + + com.google.code.gson + gson + 2.8.9 + + + + org.json + json + 20210307 + + + + + + \ No newline at end of file diff --git a/JsonBasics/src/main/java/JsonExample.java b/JsonBasics/src/main/java/JsonExample.java new file mode 100644 index 0000000..eeb0ba4 --- /dev/null +++ b/JsonBasics/src/main/java/JsonExample.java @@ -0,0 +1,83 @@ +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import org.json.JSONArray; +import org.json.JSONObject; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class JsonExample { + public static void main(String[] args) { + + /* Serialize & Deserialize Java object to JSON */ + + ObjectMapper objectMapper = new ObjectMapper(); // Create an ObjectMapper instance + Person person = new Person("John Doe", 30); // Create a sample object to be converted to JSON + try { + // Serialize Java object to JSON + String json = objectMapper.writeValueAsString(person); + System.out.println("Serialized JSON: " + json); + + // Deserialize JSON to Java object + Person deserializedPerson = objectMapper.readValue(json, Person.class); + System.out.println("\nDeserialized Person:"); + System.out.println("Name: " + deserializedPerson.getName()); + System.out.println("Age: " + deserializedPerson.getAge()); + + } catch (Exception e) { + e.printStackTrace(); + } + + /* JSON to Object using Gson Library */ + + String json = "{\"name\":\"John Doe\",\"age\":30}"; + // Create a Gson instance + Gson gson = new Gson(); + Person person1 = gson.fromJson(json, Person.class); + // Display information from the converted object + System.out.println("Name: " + person1.getName()); + System.out.println("Age: " + person1.getAge()); + + /* Object to JSON using Gson Library */ + + String obj_to_json = gson.toJson(person); + System.out.println(obj_to_json); + + /* Iterating over JSONObject*/ + + String jsonString = "{\"name\":\"John\",\"age\":30}"; + JSONObject obj = new JSONObject(jsonString); + System.out.println("Iterating over JSONObject:"); + Iterator keys = obj.keys();//all keys: name & age + while (keys.hasNext()) { //as long as there is another key + String key = keys.next(); //get next key + Object value = obj.get(key); //get next value by key + System.out.println(key + " : " + value);//print key : value + } + + /* Iterating over JSONArray*/ + + System.out.println("Iterating over JSONArray:"); + JSONArray arr = new JSONArray(); + arr.put("Code"); + arr.put("With"); + arr.put("Ease"); + for(int i=0;i>() {}.getType(); + List personList = gson.fromJson(jsonArray, listType); + for (Person p : personList) { + System.out.println("Name: " + p.getName() + ", Age: " + p.getAge()); + } + } +} diff --git a/JsonBasics/src/main/java/Person.java b/JsonBasics/src/main/java/Person.java new file mode 100644 index 0000000..27a5d4c --- /dev/null +++ b/JsonBasics/src/main/java/Person.java @@ -0,0 +1,30 @@ +public class Person { + private String name; + private int age; + + // Default constructor (required for Jackson) + public Person() {} + + // Parameterized constructor + public Person(String name, int age) { + this.name = name; + this.age = age; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + +} diff --git a/JsonBasics/target/classes/JsonExample$1.class b/JsonBasics/target/classes/JsonExample$1.class new file mode 100644 index 0000000000000000000000000000000000000000..c15931f55efbdd8a20c353f49c5de542675c15d8 GIT binary patch literal 478 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 NFMQKIFB|UP{{T!s&JzFt literal 0 HcmV?d00001 diff --git a/JsonBasics/target/classes/Person.class b/JsonBasics/target/classes/Person.class new file mode 100644 index 0000000000000000000000000000000000000000..7523efc0fa734638a01faabbe4d8a602378778ac GIT binary patch literal 817 zcmZ{iUrWMJ7{;HYb4y*VEVa`9-Kjy|bXN!w1c6vk2whGaHn9nF_NlrkD1t8f0DY+F zdAHFh4dMLpJkRs~&U^Ox_5K0i5PLbKkT#&1$Us+E9@-Cfb7Xsi=0$Jl^aBO`*!A3? zrI4=GyICwCYanML50ht?jz1ZD3Yur%I|_w%;=c-f*Bcy(W66YtWhU4Iiqtvvr{h~L zt+wkqo#}ng@vrUPC`=gl?NQhEUD?NfYQdd5QCMh4<&G3ewb@GN^)879PH-YsNXt6< zB;IPZ@YvvSCq!MV)n_9V3>qRqaZU-Tkh>aB{l0VN3T{3kI*@B)k5^5xtttN4o^Zu` zbJn4xzZ_S%YjRecGmST>=TKINMIv40+KdEPLy~Mjni_CFaKdD~v|<6^lts z0UD399CIA=SYnt&?nbsak^v#3a9Hv>j8!OOJuZ_lzF_f@q7)KFYcAskHe+*(YH5Vt zsQf~cj}7!@2q8$NNcDrHhal3N3aWEJjHf>!<+&hR*q#BAMkPIpKq>^O{sSWKCm=gv G#ocd2!fNdR literal 0 HcmV?d00001 diff --git a/LambdasAndStreams/target/classes/Person.class b/LambdasAndStreams/target/classes/Person.class new file mode 100644 index 0000000000000000000000000000000000000000..1dc1948b258f1f9a3d2bbf25c4c41a81730064c0 GIT binary patch literal 1656 zcmZ`&O>Yxd6g|&ldmLwo9mn~CK$5m0_BbIeA1x$=0tQ;Q`2ZOqrCm*usWa5r!5*`z z`ZK!djt#7`00|5Nfmn6X--N23`(|+Lgec1RecXHQJ?EbH?|*OJ12~U6CL#*)+is&- zubGG{r0+YAoQ0}Wt1PT<-gmcrg=o!r;3{NR_OHr*!>d)66bz@rD^*f3o36j61BY{m zBlGu&Q><^heNZ@NA%?g@YQ?L$Ypn;HZsV@AS=BY_TTb;9!C8guc?q&3EE`U zc*XUvNnsmRH?&8wq?tc0rqeh-%BTNlfA^sgRV_X$!N+u`g$L*R5?U%zvh@ z!&O80C4sO7qM$I5D;^z~z&wl0O>sKQlC&U6UrSQy=p+d|YvCkLahg;(m}cC4*mA1W zzh|t0H_K?`-|P>gK1kM7qidX~Ql-t-~KZ$EcebOaE$3ol_k*Kq^OSf)ajgpwCeSS5xH%WN}R_}XtV zxsjQEg)d3mYGWon+eSV!$CW72#+me=JZR&aXN(R+86h%=)W=saj494*8mGAztpkzl zj!5S^6}uI-_Q3*$XS$MOon$&aZ1=BFl|{So6tU=D;U5gxZG2nc{}aTFy}}2mRiQAa zX)OMYwDiwi_OT=wGE+m(G!W3HC;x&rp*C-uy)!8o2;~mcHgoxnw{{>VcX8-^I literal 0 HcmV?d00001 diff --git a/LambdasAndStreams/target/classes/README-Streams.md b/LambdasAndStreams/target/classes/README-Streams.md new file mode 100644 index 0000000..dd26c58 --- /dev/null +++ b/LambdasAndStreams/target/classes/README-Streams.md @@ -0,0 +1,57 @@ +# + +# Java Streams + +A *Stream in Java* - **sequence of elements from a source**. + +## Background and History + +Before Java 8, working with collections in Java involved writing iterative loops and manually performing operations on the data. However, Java 8 introduced Java Streams, a game-changing feature that brought functional programming concepts to the Java language. This opened up new possibilities for writing expressive and concise code when working with collections. + + +## Importance of Learning Java Streams + +Learning Java Streams is crucial for several reasons. Firstly, it enables you to write more readable and maintainable code. With the power of lambda expressions and functional interfaces, you can perform complex operations on collections in a more concise and expressive manner. + +Secondly, Java Streams promote a declarative style of programming, where you focus on describing what you want to achieve rather than the step-by-step implementation details. This leads to cleaner code that is easier to understand and maintain. + +Furthermore, Java Streams provide a higher level of abstraction, allowing you to perform common data manipulation tasks such as filtering, mapping, and reducing with simplicity and efficiency. This abstraction makes your code more modular and reusable, saving you time and effort in the long run. + +## Operations + +#### Stream Creation + +Streams can be created from various data sources such as collections, arrays, I/O channels, or generator functions. Here are examples of creating stream + +``` +List numbers = Arrays.asList(1, 2, 3, 4, 5); +Stream streamFromList = numbers.stream(); + +int[] array = {1, 2, 3, 4, 5}; +IntStream streamFromArray = Arrays.stream(array); + +Stream streamFromIO = Files.lines(Paths.get("file.txt")); + +Stream streamFromGenerator = Stream.generate(() -> 42); + +``` + +#### Intermediate Operations + +Intermediate operations are used to transform, filter, or manipulate the elements of a Stream. They return a new Stream as a result. Some commonly used intermediate operations are: + +* `filter(Predicate)`: Filters elements based on a given condition. +* `map(Function)`: Transforms each element of the Stream to another type. +* `flatMap(Function> )`: Flattens nested Streams into a single Stream. + +#### Terminal Operations + +Terminal operations produce a final result or a side effect. They trigger the processing of the Stream and do not return another Stream. Examples of terminal operations are: + +* `forEach(Consumer)`: Performs an action for each element in the Stream. +* `collect(Collector)`: Accumulates the elements into a collection or other data structure. +* `reduce(BinaryOperator)`: Performs a reduction on the elements of the Stream. + +#### Lazy Evaluation + +Java Streams employ lazy evaluation, which means that the elements of a Stream are processed on-demand, only when a terminal operation is invoked. This approach allows for optimization by avoiding unnecessary computations and improving performance when working with large or infinite Streams. diff --git a/LambdasAndStreams/target/classes/StreamsAllCodeSolutions.class b/LambdasAndStreams/target/classes/StreamsAllCodeSolutions.class new file mode 100644 index 0000000000000000000000000000000000000000..d5e100945168baff2822c7cc8c9b407ecf47e42c GIT binary patch literal 7386 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 kH1rYqxO`GWzaqaXpVrW4-Q~&?~ literal 0 HcmV?d00001 diff --git a/LambdasAndStreams/target/classes/StreamsCodePart2 b/LambdasAndStreams/target/classes/StreamsCodePart2 new file mode 100644 index 0000000..0fda2ab --- /dev/null +++ b/LambdasAndStreams/target/classes/StreamsCodePart2 @@ -0,0 +1,136 @@ +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.IntStream; +import java.util.stream.Stream; + +public class StreamsCodeDemoPart2 { + public static void main(String[] args) { + + //1. Given a sentence, find and print the frequency of each word. + String sentence = "Java is a programming language. Java is versatile."; + + Map wordFreqMap = Arrays.stream(sentence.split("\\s+")) + .collect(Collectors.groupingBy(String::toLowerCase, Collectors.counting())); + + +// System.out.println(wordFreqMap); + + //2. Given a list of integers, find out all the numbers starting with 1. + + List nums = Arrays.asList(12, 13, 18, 21, 90, 11); + + List numsWithOne = nums.stream().filter( n -> String.valueOf(n).startsWith("1")).collect(Collectors.toList()); + +// System.out.println(numsWithOne); + + //3. Given a list of names, group them by their first letter, and then count the number of names in each group. + + String[] names = {"Alice", "Bob", "Charlie", "Amy", "Bill", "Anna"}; + + Map namesMap = Arrays.stream(names).collect(Collectors.groupingBy(s -> s.charAt(0), Collectors.counting())); + +// System.out.println(namesMap); + + + // 4. Find and print duplicate numbers in an array if it contains multiple duplicates? + + int[] arr = {2,4,2,3,1,5, 5,78,3,1,5}; + +// Arrays.stream(arr).boxed() +// .collect(Collectors.groupingBy(e-> e, Collectors.counting())) +// .entrySet().stream() +// //key -value - 2 (k), 2(val) +// .filter(entry -> entry.getValue() > 1) +// .map(Map.Entry::getKey) +// .forEach(System.out::println); + + + // 5. How are duplicates removed from a given array in Java? +// + int[] arr2 = {2,4,2,3,1,78}; + + int[] newarr = Arrays.stream(arr).distinct().toArray(); + +// System.out.println(Arrays.toString(newarr)); + + + //6. Given a list of words, filter and print the palindromes + + List strings = List.of("level", "hello", "radar", "world", "deed"); + + List palindromeWords = strings.stream(). + filter(str -> str.equals(new StringBuilder(str).reverse().toString())).collect(Collectors.toList()); + +// System.out.println(palindromeWords); + + + // 7. How do you merge two sorted arrays into a single sorted array? + int[] array1 = {1, 3,32, 5, 7}; + int[] array2 = {2, 4, 6,62, 8}; + + int[] sortedArray = IntStream.concat(Arrays.stream(array1), Arrays.stream(array2)).sorted().toArray(); +// System.out.println(Arrays.toString(sortedArray)); + + + //8. Given two lists of strings, concatenate them and remove duplicates. + + List list1 = List.of("apple", "banana", "orange"); + List list2 = List.of("banana", "kiwi", "grape"); + + List uniqueList = Stream.concat(list1.stream(), list2.stream()).distinct().collect(Collectors.toList()); +// System.out.println(uniqueList); + + + // 9. Student Grade Classification - 70 and above pass + + List students = List.of( + new Student("Alice", 85), + new Student("Bob", 60), + new Student("Charlie", 75), + new Student("David", 90) + ); + + + Map> studentMap = + students.stream().collect(Collectors.groupingBy(student -> student.grade >= 70 ? "Pass" : "Fail")); + +// System.out.println(studentMap); + + + //10. Given a list of strings, sort them according to increasing order of their length. + + List fruits = Arrays.asList("Mango","pear" ,"Apple", "Banana", "Pineapple", "Kiwi"); + + fruits.stream().sorted(Comparator.comparingInt(String::length)).forEach(System.out::println); + + + //12.Partition a list of numbers into two groups: even and odd, using a custom predicate. + List numbers1 = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); + Map> partitionedNumbers = numbers1.stream() + .collect(Collectors.partitioningBy(n -> n % 2 == 0)); + + System.out.println(partitionedNumbers); + + //13. Find the squares of the first three even numbers in a list. + + List numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); + List firstThreeSquares = numbers.stream() + .filter(n -> n % 2 == 0) + .map(n -> n * n) + .limit(3) + .collect(Collectors.toList()); + + // 14. Flatten a list of lists + + List> listOfLists = Arrays.asList(Arrays.asList(1, 2), Arrays.asList(3, 4), Arrays.asList(5, 6)); + List flattenedList = listOfLists.stream() + .flatMap(List::stream) + .collect(Collectors.toList()); + + System.out.println(flattenedList); + + + + } +} diff --git a/LambdasAndStreams/target/classes/StreamsTenPracticeQuestions.class b/LambdasAndStreams/target/classes/StreamsTenPracticeQuestions.class new file mode 100644 index 0000000000000000000000000000000000000000..0d0390ef63f68039ae0b1f58ed386d66fb657180 GIT binary patch literal 424 zcmaJ-O-sW-5Pg%Tjg8gTR=kLyx2Rw)-YUHao`N5=^x|m~m$)U_z-HtB@+5fh2l%7J z*(fL?J?xvEnfK=F{p0lwz&UmUc!d4AHByxILh4&1GOIFq*T~wcO4k8=!e}L)L|h1+ z$2aLpW|q*qP+Hj;p%Wc13I1jEAVYM}AE1jKVVEc_ubVQJW+Bo-62?iDiDD^?a{hPF zw~wkO93*Q-m~#12C{5Ul?vtNUSfX@3ZQBczbD7CMX+k)!8k5N@<)%1X)9B3A#u0ca zz7F8=kC$N#*o)Z`+wRE=HlEvb$mr65k4?tG7lG{-dwpzU$Pp(#<>z?xR~Y>g@}aTQ J632`lCZD35TCD&8 literal 0 HcmV?d00001 diff --git a/LambdasAndStreams/target/classes/assets/Screenshot 2023-07-27 at 11.07.16 PM.png b/LambdasAndStreams/target/classes/assets/Screenshot 2023-07-27 at 11.07.16 PM.png new file mode 100644 index 0000000000000000000000000000000000000000..cc18a03cb1e85d1cf76cd06fbee3bd819150be0c GIT binary patch literal 67963 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 F{}1p