Skip to content

Commit 2b9f920

Browse files
committed
1 parent 6c0c4df commit 2b9f920

File tree

7 files changed

+138
-135
lines changed

7 files changed

+138
-135
lines changed

lang/Saving Space with String Caching/src/main/java/com/javacreed/examples/lang/part1/Example1.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,19 @@
1919
* limitations under the License.
2020
* #L%
2121
*/
22-
package com.javacreed.examples.lang.part1;
23-
24-
import org.slf4j.Logger;
25-
import org.slf4j.LoggerFactory;
26-
27-
public class Example1 {
28-
29-
private static final Logger LOGGER = LoggerFactory.getLogger(Example1.class);
30-
31-
public static void main(final String[] args) {
32-
final String a = "abcd";
33-
final String b = "abcd";
34-
35-
Example1.LOGGER.debug("Same? {}", a == b);
36-
}
37-
}
22+
package com.javacreed.examples.lang.part1;
23+
24+
import org.slf4j.Logger;
25+
import org.slf4j.LoggerFactory;
26+
27+
public class Example1 {
28+
29+
private static final Logger LOGGER = LoggerFactory.getLogger(Example1.class);
30+
31+
public static void main(final String[] args) {
32+
final String a = "abcd";
33+
final String b = "abcd";
34+
35+
Example1.LOGGER.debug("Same? {}", a == b);
36+
}
37+
}

lang/Saving Space with String Caching/src/main/java/com/javacreed/examples/lang/part1/Example2.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,19 @@
1919
* limitations under the License.
2020
* #L%
2121
*/
22-
package com.javacreed.examples.lang.part1;
23-
24-
import org.slf4j.Logger;
25-
import org.slf4j.LoggerFactory;
26-
27-
public class Example2 {
28-
29-
private static final Logger LOGGER = LoggerFactory.getLogger(Example2.class);
30-
31-
public static void main(final String[] args) {
32-
final String a = new String("abcd");
33-
final String b = new String("abcd");
34-
35-
Example2.LOGGER.debug("Same? {}", a == b);
36-
}
37-
}
22+
package com.javacreed.examples.lang.part1;
23+
24+
import org.slf4j.Logger;
25+
import org.slf4j.LoggerFactory;
26+
27+
public class Example2 {
28+
29+
private static final Logger LOGGER = LoggerFactory.getLogger(Example2.class);
30+
31+
public static void main(final String[] args) {
32+
final String a = new String("abcd");
33+
final String b = new String("abcd");
34+
35+
Example2.LOGGER.debug("Same? {}", a == b);
36+
}
37+
}

lang/Saving Space with String Caching/src/main/java/com/javacreed/examples/lang/part2/Example3.java

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,20 @@
1919
* limitations under the License.
2020
* #L%
2121
*/
22-
package com.javacreed.examples.lang.part2;
23-
24-
import org.slf4j.Logger;
25-
import org.slf4j.LoggerFactory;
26-
27-
public class Example3 {
28-
29-
private static final Logger LOGGER = LoggerFactory.getLogger(Example3.class);
30-
31-
public static void main(final String[] args) {
32-
final String a = new String("abcd");
33-
final String b = new String("abcd");
34-
35-
Example3.LOGGER.debug("Same? {}", a == b);
36-
Example3.LOGGER.debug("Same intern? {}", a.intern() == b.intern());
37-
}
38-
}
22+
package com.javacreed.examples.lang.part2;
23+
24+
import org.slf4j.Logger;
25+
import org.slf4j.LoggerFactory;
26+
27+
public class Example3 {
28+
29+
private static final Logger LOGGER = LoggerFactory.getLogger(Example3.class);
30+
31+
public static void main(final String[] args) {
32+
final String a = new String("abcd");
33+
final String b = new String("abcd");
34+
35+
Example3.LOGGER.debug("Same? {}", a == b);
36+
Example3.LOGGER.debug("Same intern? {}", a.intern() == b.intern());
37+
}
38+
}

lang/Saving Space with String Caching/src/main/java/com/javacreed/examples/lang/part3/Example4.java

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,25 +19,25 @@
1919
* limitations under the License.
2020
* #L%
2121
*/
22-
package com.javacreed.examples.lang.part3;
23-
24-
import java.util.ArrayList;
25-
import java.util.List;
26-
27-
import org.slf4j.Logger;
28-
import org.slf4j.LoggerFactory;
29-
30-
public class Example4 {
31-
32-
private static final Logger LOGGER = LoggerFactory.getLogger(Example4.class);
33-
34-
public static void main(final String[] args) {
35-
final int limit = 50000000;
36-
final List<String> data = new ArrayList<>(limit);
37-
for (int i = 0; i < limit; i++) {
38-
data.add(new String("Sphinx of black quartz, judge my vow"));
39-
}
40-
41-
Example4.LOGGER.debug("Done");
42-
}
43-
}
22+
package com.javacreed.examples.lang.part3;
23+
24+
import java.util.ArrayList;
25+
import java.util.List;
26+
27+
import org.slf4j.Logger;
28+
import org.slf4j.LoggerFactory;
29+
30+
public class Example4 {
31+
32+
private static final Logger LOGGER = LoggerFactory.getLogger(Example4.class);
33+
34+
public static void main(final String[] args) {
35+
final int limit = 50000000;
36+
final List<String> data = new ArrayList<>(limit);
37+
for (int i = 0; i < limit; i++) {
38+
data.add(new String("Sphinx of black quartz, judge my vow"));
39+
}
40+
41+
Example4.LOGGER.debug("Done");
42+
}
43+
}

lang/Saving Space with String Caching/src/main/java/com/javacreed/examples/lang/part3/Example5.java

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,25 +19,25 @@
1919
* limitations under the License.
2020
* #L%
2121
*/
22-
package com.javacreed.examples.lang.part3;
23-
24-
import java.util.ArrayList;
25-
import java.util.List;
26-
27-
import org.slf4j.Logger;
28-
import org.slf4j.LoggerFactory;
29-
30-
public class Example5 {
31-
32-
private static final Logger LOGGER = LoggerFactory.getLogger(Example5.class);
33-
34-
public static void main(final String[] args) {
35-
final int limit = 50000000;
36-
final List<String> data = new ArrayList<>(limit);
37-
for (int i = 0; i < limit; i++) {
38-
data.add(new String("Sphinx of black quartz, judge my vow").intern());
39-
}
40-
41-
Example5.LOGGER.debug("Done");
42-
}
43-
}
22+
package com.javacreed.examples.lang.part3;
23+
24+
import java.util.ArrayList;
25+
import java.util.List;
26+
27+
import org.slf4j.Logger;
28+
import org.slf4j.LoggerFactory;
29+
30+
public class Example5 {
31+
32+
private static final Logger LOGGER = LoggerFactory.getLogger(Example5.class);
33+
34+
public static void main(final String[] args) {
35+
final int limit = 50000000;
36+
final List<String> data = new ArrayList<>(limit);
37+
for (int i = 0; i < limit; i++) {
38+
data.add(new String("Sphinx of black quartz, judge my vow").intern());
39+
}
40+
41+
Example5.LOGGER.debug("Done");
42+
}
43+
}

lang/Saving Space with String Caching/src/main/java/com/javacreed/examples/lang/part3/Example6.java

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,27 @@
1919
* limitations under the License.
2020
* #L%
2121
*/
22-
package com.javacreed.examples.lang.part3;
23-
24-
import java.util.ArrayList;
25-
import java.util.List;
26-
27-
import org.slf4j.Logger;
28-
import org.slf4j.LoggerFactory;
29-
30-
public class Example6 {
31-
32-
private static final Logger LOGGER = LoggerFactory.getLogger(Example6.class);
33-
34-
public static void main(final String[] args) {
35-
final StringPool cache = new StringPool();
36-
37-
final int limit = 50000000;
38-
final List<String> data = new ArrayList<>(limit);
39-
for (int i = 0; i < limit; i++) {
40-
data.add(cache.get(new String("Sphinx of black quartz, judge my vow")));
41-
}
42-
43-
Example6.LOGGER.debug("Done");
44-
}
45-
}
22+
package com.javacreed.examples.lang.part3;
23+
24+
import java.util.ArrayList;
25+
import java.util.List;
26+
27+
import org.slf4j.Logger;
28+
import org.slf4j.LoggerFactory;
29+
30+
public class Example6 {
31+
32+
private static final Logger LOGGER = LoggerFactory.getLogger(Example6.class);
33+
34+
public static void main(final String[] args) {
35+
final StringPool cache = new StringPool();
36+
37+
final int limit = 50000000;
38+
final List<String> data = new ArrayList<>(limit);
39+
for (int i = 0; i < limit; i++) {
40+
data.add(cache.get(new String("Sphinx of black quartz, judge my vow")));
41+
}
42+
43+
Example6.LOGGER.debug("Done");
44+
}
45+
}

lang/Saving Space with String Caching/src/main/java/com/javacreed/examples/lang/part3/StringPool.java

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,24 @@
1919
* limitations under the License.
2020
* #L%
2121
*/
22-
package com.javacreed.examples.lang.part3;
23-
24-
import java.util.HashMap;
25-
import java.util.Map;
26-
27-
public class StringPool {
28-
29-
private final Map<String, String> cache = new HashMap<>();
30-
31-
public String get(final String value) {
32-
String cachedValue = cache.get(value);
33-
if (cachedValue == null) {
34-
cachedValue = value;
35-
cache.put(value, value);
36-
}
37-
return cachedValue;
38-
}
39-
}
22+
package com.javacreed.examples.lang.part3;
23+
24+
import java.util.HashMap;
25+
import java.util.Map;
26+
27+
import net.jcip.annotations.NotThreadSafe;
28+
29+
@NotThreadSafe
30+
public class StringPool {
31+
32+
private final Map<String, String> cache = new HashMap<>();
33+
34+
public String get(final String value) {
35+
String cachedValue = cache.get(value);
36+
if (cachedValue == null) {
37+
cachedValue = value;
38+
cache.put(value, value);
39+
}
40+
return cachedValue;
41+
}
42+
}

0 commit comments

Comments
 (0)