Useful Java Code Snippets

TreeMap/TreeSet

//[From](https://leetcode.com/problems/falling-squares/discuss/112678/Treemap-solution-and-Segment-tree-(Java)-solution-with-lazy-propagation-and-coordinates-compression) 
Integer from = treeMap.floorKey(start);
int height = treeMap.subMap(from, end).values().stream().max(Integer::compare).get();
// remove interval within [start, end) 
int lastHeight = treeMap.floorEntry(end).getValue();
treeMap.put(start, height);
treeMap.put(end, lastHeight);
treeMap.keySet().removeAll(new HashSet<>(treeMap.subMap(start, false, end, false).keySet()));
 
 
//<=, >= 
treeset.floor()/ceilling()
// <, > 
treeset.lower()/higher()
 
treemap.floorEntry()/floorKey(), ceillingEntry()/ceillingKey()
// <, > 
treemap.lowerEntry()/lowerKey(), higherEntry()/higherKey()

ArrayDeque

  • As stack or queue:
peekLast, addLast, removeLast, pollLast
peekFirst, addFirst, removeFirst, pollFirst
  • its default iterator or stream is a queue: fifo
  • Use iterator, for loop to access it, but not support random access like get(i)
// Array to set 
Arrays.stream(wrapperArray).collect(Collectors.toSet())
Arrays.stream(primitiveArray).boxed().collect(Collectors.toSet())
// to TreeSet 
strStream.collect(Collectors.toCollection(TreeSet::new))
 
count.put(word, count.getOrDefault(word, 0) + 1);
// computeIfAbsent returns latest value, prefer this over putIfAbsent 
map.computeIfAbsent(key, k -> new PriorityQueue()).add(value);
 
// iterate 
Stream.iterate(wordsSize - 1, li -> li - 1).limit(wordsSize);
Stream.iterate(1, i -> i <= 3, i -> i + 1)
 
Map<String, Long> counted = list.stream()
  .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
 
Map<Character, Long>  astring.chars().mapToObj(ch -> (char) ch)
  .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
/* char[] to Stream */
Stream<Character> stream = CharBuffer.wrap(list).chars().mapToObj(ch -> (char)ch);
 
IntStream intStream = Arrays.stream(new int[] {});
 
/* int[] to Stream<Integer> */
Stream<Integer> i = Arrays.stream(new int[] {}).boxed();
 
/* IntStream to int[]*/
int[] array = intStream.mapToInt(i->i).toArray();
 
Stream.of(int1, int2, ...).min(Integer::compare).get();

Optional

optional.ifPresentOrElse(action, emptyAction)

Avoid null check

Optional.of(new Outer())
    .map(Outer::getNested)
    .map(Nested::getInner)
    .map(Inner::getFoo)
    .ifPresent(System.out::println);

Reference

// UnModifiable collection 
List.of(1, 2)
List.copyOf(aList)
Set.of(1, 2)
Map.of("k1", "v1")
IntStream.range(1, 10)
IntStream.rangeClosed(1, 10)
IntStream.iterate(0, x -> x < 3, x -> x + 1)
 
IntStream
.max/min/average.getAsInt()
.sum
 
Stream<Integer>
.collect(Collectors.averagingInt(-> i))
 
.averagingInt
.min(max)By(comparator)
.joining(delimiter,prefix,suffix)
.partitioningBy(predicate)
 
articles.collect(  
  Collectors.groupingBy(
    Article::getTag,
    Collectors.summingInt(Article::getWordCount)));

Misc

new StringBuilder(word).reverse().toString()
/* number to char array */
char[] array = String.valueOf(number).toCharArray();
 
/* char[] to number, work with prefix 0 like 01 */
Integer.parseInt(new String(charArray))
 
Arrays.fill(array, fromIndex, toIndex, val)
 
Comparator.naturalOrder()/reverseOrder()
 
Optional<Integer> max = list.stream().max(Comparator.naturalOrder());
 
Optional<Integer> max = list.stream().reduce(Integer::max);
 
/*remove multiple keys from Map*/
map.keySet().removeAll(set);
 
/* [][] to List<List<>> */
List<List<String>> r = Arrays.stream([][]).map(-> Arrays.stream(s)
  .collect(Collectors.toList())).collect(Collectors.toList())
 
// Get max from Map<Integer, Map<Integer, Integer>> 
map.values().stream().flatMap(tmp ->tmp.values().stream())
  .max(Comparator.naturalOrder()).get()
 
new random.ints(streamSize, randomNumberOrigin, randomNumberBound)
 
Collections.reverse(collection);
// array head, tail pointer 
int j = s.length() - 1 - i;
 
javafx.util.pair pair = new new Pair<>(key, value);
Map.entry entry = Map.entry(key, value)
 
 
Character.isLetter/isWhitespace
 
// [deepToString() works for both single and multidimensional, but doesn’t work single dimensional array of primitives](https://www.geeksforgeeks.org/arrays-deeptostring-in-java-with-example/) 
Arrays.deepToString(array)/toString(array)
 
String bits = Integer.toBinaryString(n);
Integer.bitCount(n)
Post a Comment

Labels

Java (160) Lucene-Solr (112) Interview (64) All (58) J2SE (53) Algorithm (45) Soft Skills (39) Eclipse (33) Code Example (31) JavaScript (23) Linux (22) Spring (22) Windows (22) Tools (21) Web Development (20) Nutch2 (18) Bugs (17) Debug (16) Defects (14) Text Mining (14) Troubleshooting (14) J2EE (13) Network (13) PowerShell (11) Problem Solving (10) Chrome (9) Design (9) How to (9) Learning code (9) Performance (9) UIMA (9) html (9) Http Client (8) Maven (8) Security (8) Tips (8) bat (8) blogger (8) Big Data (7) Database (7) Google (7) Guava (7) JSON (7) Shell (7) System Design (7) ANT (6) Coding Skills (6) Lesson Learned (6) Programmer Skills (6) Scala (6) css (6) Algorithm Series (5) Cache (5) Continuous Integration (5) IDE (5) adsense (5) xml (5) AIX (4) Become a Better You (4) Code Quality (4) Concurrency (4) Dynamic Languages (4) GAE (4) Git (4) Good Programming Practices (4) Jackson (4) Memory Usage (4) Miscs (4) OpenNLP (4) Project Managment (4) Review (4) Spark (4) Testing (4) ads (4) regular-expression (4) Android (3) Apache Spark (3) Distributed (3) Eclipse RCP (3) English (3) Happy Hacking (3) IBM (3) J2SE Knowledge Series (3) JAX-RS (3) Jetty (3) Life (3) Python (3) Restful Web Service (3) Script (3) regex (3) seo (3) .Net (2) Android Studio (2) Apache (2) Apache Procrun (2) Architecture (2) Batch (2) Bit Operation (2) Build (2) Building Scalable Web Sites (2) C# (2) C/C++ (2) CSV (2) Career (2) Cassandra (2) Fiddler (2) Google Drive (2) Gson (2) How to Interview (2) Html Parser (2) Http (2) Image Tools (2) JQuery (2) Jersey (2) LDAP (2) Logging (2) Mac (2) Software Issues (2) Storage (2) Text Search (2) xml parser (2) AOP (1) Application Design (1) AspectJ (1) Chrome DevTools (1) Cloud (1) Codility (1) Data Mining (1) Data Structure (1) ExceptionUtils (1) Exif (1) Feature Request (1) FindBugs (1) Firefox (1) Greasemonkey (1) HTML5 (1) Httpd (1) I18N (1) IBM Java Thread Dump Analyzer (1) Invest (1) JDK Source Code (1) JDK8 (1) JMX (1) Lazy Developer (1) Machine Learning (1) Mobile (1) My Plan for 2010 (1) Netbeans (1) Notes (1) Operating System (1) Perl (1) Problems (1) Product Architecture (1) Programming Life (1) Quality (1) Redhat (1) Redis (1) RxJava (1) Solutions logs (1) Team Management (1) Thread Dump Analyzer (1) Visualization (1) boilerpipe (1) htm (1) ongoing (1) procrun (1) rss (1)

Popular Posts