\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{Ptero} \pdfinfo{ /Title (data-structure-api.pdf) /Creator (Cheatography) /Author (Ptero) /Subject (Data Structure API Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{A3A3A3} \definecolor{LightBackground}{HTML}{F3F3F3} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{Data Structure API Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{Ptero} via \textcolor{DarkBackground}{\uline{cheatography.com/190551/cs/39663/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}Ptero \\ \uline{cheatography.com/ptero} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Not Yet Published.\\ Updated 26th July, 2023.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{tabularx}{17.67cm}{x{8.2896 cm} x{8.9804 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{Java Wrapper Class}} \tn % Row 0 \SetRowColor{LightBackground} `\{\{lang-java\}\}byte` & `\{\{lang-java\}\}Byte` \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} `\{\{lang-java\}\}short` & `\{\{lang-java\}\}Short` \tn % Row Count 3 (+ 2) % Row 2 \SetRowColor{LightBackground} `\{\{lang-java\}\}int` & `\{\{lang-java\}\}Integer` \tn % Row Count 5 (+ 2) % Row 3 \SetRowColor{white} `\{\{lang-java\}\}long` & `\{\{lang-java\}\}Long` \tn % Row Count 6 (+ 1) % Row 4 \SetRowColor{LightBackground} `\{\{lang-java\}\}float` & `\{\{lang-java\}\}Float` \tn % Row Count 8 (+ 2) % Row 5 \SetRowColor{white} `\{\{lang-java\}\}double` & `\{\{lang-java\}\}Double` \tn % Row Count 10 (+ 2) % Row 6 \SetRowColor{LightBackground} `\{\{lang-java\}\}boolean` & `\{\{lang-java\}\}Boolean` \tn % Row Count 12 (+ 2) % Row 7 \SetRowColor{white} `\{\{lang-java\}\}char` & `\{\{lang-java\}\}Character` \tn % Row Count 14 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{p{2.1411 cm} x{4.1175 cm} x{7.7409 cm} x{2.4705 cm} } \SetRowColor{DarkBackground} \mymulticolumn{4}{x{17.67cm}}{\bf\textcolor{white}{Array}} \tn % Row 0 \SetRowColor{LightBackground} & C++ & Java & \seqsplit{Python3} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} new & int x = {[}0{]}; & int{[}{]} x = new int{[}{]}\{0\}; & x = {[}0{]} \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} \seqsplit{length} & sizeof(x) & x.length & \seqsplit{len(x)} \tn % Row Count 6 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}----} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{2.3058 cm} x{6.4233 cm} x{5.7645 cm} x{1.9764 cm} } \SetRowColor{DarkBackground} \mymulticolumn{4}{x{17.67cm}}{\bf\textcolor{white}{String}} \tn % Row 0 \SetRowColor{LightBackground} & C++ & Java & \seqsplit{Python3} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} new & char* s = "string"; & String s = "string"; & s = \seqsplit{"string"} \tn % Row Count 5 (+ 3) % Row 2 \SetRowColor{LightBackground} get & char c = s{[}0{]}; & char c = s.charAt(0); & c = s{[}0{]}; \tn % Row Count 8 (+ 3) % Row 3 \SetRowColor{white} \seqsplit{length} & strlen(s) & s.length() & \seqsplit{len(s)} \tn % Row Count 10 (+ 2) % Row 4 \SetRowColor{LightBackground} sub \seqsplit{string} & char* sub = malloc(10);\{\{nl\}\}strncpy(sub, s+begin, end-begin); & String sub = \seqsplit{s.substring(begin}, end); & s{[}begin, end{]} \tn % Row Count 15 (+ 5) % Row 5 \SetRowColor{white} check \seqsplit{substring} & if (strstr(sub, s)) & if \seqsplit{(s.contains(sub))} & if sub in s: \tn % Row Count 18 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}----} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{2.1411 cm} x{3.4587 cm} x{7.7409 cm} x{3.1293 cm} } \SetRowColor{DarkBackground} \mymulticolumn{4}{x{17.67cm}}{\bf\textcolor{white}{Stack}} \tn % Row 0 \SetRowColor{LightBackground} & C++ & Java & \seqsplit{Python3} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \seqsplit{include} & \seqsplit{\#include} \textless{}stack\textgreater{} & import java.util.*; & \tn % Row Count 3 (+ 2) % Row 2 \SetRowColor{LightBackground} new & std::stack\textless{}int\textgreater{} s; & Stack\textless{}Integer\textgreater{} s = new Stack\textless{}Integer\textgreater{}(); & s = {[}{]} \tn % Row Count 6 (+ 3) % Row 3 \SetRowColor{white} push & \seqsplit{s.push(i)} & s.push(i); & \seqsplit{s.append(i)} \tn % Row Count 8 (+ 2) % Row 4 \SetRowColor{LightBackground} pop & \seqsplit{s.pop();} & popped = s.pop(); & popped = \seqsplit{s.pop()} \tn % Row Count 11 (+ 3) % Row 5 \SetRowColor{white} top & s.top() & s.peak() & s{[}-1{]} \tn % Row Count 12 (+ 1) % Row 6 \SetRowColor{LightBackground} size & \seqsplit{s.size()} & s.size() & len(s) \tn % Row Count 13 (+ 1) % Row 7 \SetRowColor{white} check empty & if \seqsplit{(s.empty())} & if (s.empty()) & if not s: \tn % Row Count 16 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}----} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{2.1411 cm} x{3.4587 cm} x{7.5762 cm} x{3.294 cm} } \SetRowColor{DarkBackground} \mymulticolumn{4}{x{17.67cm}}{\bf\textcolor{white}{Queue}} \tn % Row 0 \SetRowColor{LightBackground} & C++ & Java & Python3 \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \seqsplit{include} & \seqsplit{\#include} \textless{}queue\textgreater{} & import java.util.*; & \tn % Row Count 3 (+ 2) % Row 2 \SetRowColor{LightBackground} new & std::queue\textless{}int\textgreater{} q; & Queue\textless{}Integer\textgreater{} q = new LinkedList\textless{}\textgreater{}(); & q = {[}{]} \tn % Row Count 6 (+ 3) % Row 3 \SetRowColor{white} push & \seqsplit{q.push(i);} & q.add(i); & \seqsplit{q.append(i)} \tn % Row Count 8 (+ 2) % Row 4 \SetRowColor{LightBackground} pop & q.pop() & popped = q.remove(); & popped = \seqsplit{q.pop(0)} \tn % Row Count 11 (+ 3) % Row 5 \SetRowColor{white} front & \seqsplit{q.front()} & q.peek() & q{[}0{]} \tn % Row Count 13 (+ 2) % Row 6 \SetRowColor{LightBackground} size & \seqsplit{q.size()} & q.size() & len(q) \tn % Row Count 14 (+ 1) % Row 7 \SetRowColor{white} check empty & if \seqsplit{(q.empty())} & if (q.isEmpty()) & if not q: \tn % Row Count 17 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}----} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{1.647 cm} x{5.1057 cm} x{5.1057 cm} x{4.6116 cm} } \SetRowColor{DarkBackground} \mymulticolumn{4}{x{17.67cm}}{\bf\textcolor{white}{Heap}} \tn % Row 0 \SetRowColor{LightBackground} & C++ & Java & Python3 \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \seqsplit{include} & \#include \textless{}queue\textgreater{} & import \seqsplit{java.util.*;} & from queue import \seqsplit{PriorityQueue} \tn % Row Count 4 (+ 3) % Row 2 \SetRowColor{LightBackground} new min heap & std::priority\_queue\textless{}int, std::vector\textless{}int\textgreater{}, std::greater\textless{}int\textgreater{}\textgreater{} h; & Queue\textless{}Integer\textgreater{} h = new PriorityQueue\textless{}\textgreater{}(); & h = \seqsplit{PriorityQueue()} \tn % Row Count 10 (+ 6) % Row 3 \SetRowColor{white} new max heap & std::priority\_queue\textless{}int\textgreater{} h; & Queue\textless{}Integer\textgreater{} h = new PriorityQueue\textless{}\textgreater{}(Collections.reverseOrder()); & \tn % Row Count 16 (+ 6) % Row 4 \SetRowColor{LightBackground} push & h.push(i); & h.add(i); & h.put((1, "Harry")) \tn % Row Count 18 (+ 2) % Row 5 \SetRowColor{white} pop & h.pop(); & Integer popped = h.poll(); & popped = h.get() \tn % Row Count 21 (+ 3) % Row 6 \SetRowColor{LightBackground} top & h.top() & h.peek() & popped = h.get()\{\{nl\}\}h.put(popped) \tn % Row Count 25 (+ 4) % Row 7 \SetRowColor{white} size & h.size() & h.size() & h.qsize() \tn % Row Count 26 (+ 1) % Row 8 \SetRowColor{LightBackground} check empty & if (h.empty()) & if \seqsplit{(h.isEmpty())} & if h.empty(): \tn % Row Count 29 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}----} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{1.9764 cm} x{6.9174 cm} x{5.5998 cm} x{1.9764 cm} } \SetRowColor{DarkBackground} \mymulticolumn{4}{x{17.67cm}}{\bf\textcolor{white}{HashSet}} \tn % Row 0 \SetRowColor{LightBackground} & C++ & Java & \seqsplit{Python3} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \seqsplit{include} & \#include \textless{}unordered\_set\textgreater{} & import java.util.*; & \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} new & std::unordered\_set\textless{}int\textgreater{} s; & Set\textless{}Integer\textgreater{} s = new HashSet\textless{}\textgreater{}(); & s = set() \tn % Row Count 7 (+ 3) % Row 3 \SetRowColor{white} add & s.insert(x); & s.add(x); & \seqsplit{s.add(x)} \tn % Row Count 9 (+ 2) % Row 4 \SetRowColor{LightBackground} \seqsplit{delete} & s.erase(x); & s.remove(x); & \seqsplit{s.discard(x)} \tn % Row Count 12 (+ 3) % Row 5 \SetRowColor{white} check in set & std::unordered\_set\textless{}int\textgreater{}::const\_iterator it = s.find(x);\{\{nl\}\}if (it != s.end()) & if \seqsplit{(s.contains(x))} & if x in s: \tn % Row Count 17 (+ 5) % Row 6 \SetRowColor{LightBackground} size & s.size() & s.size() & \seqsplit{len(s)} \tn % Row Count 19 (+ 2) % Row 7 \SetRowColor{white} check empty & if (s.empty()) & if \seqsplit{(s.isEmpty())} & if not s: \tn % Row Count 22 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}----} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{1.9764 cm} x{5.9292 cm} x{5.7645 cm} x{2.7999 cm} } \SetRowColor{DarkBackground} \mymulticolumn{4}{x{17.67cm}}{\bf\textcolor{white}{HashMap}} \tn % Row 0 \SetRowColor{LightBackground} & C++ & Java & \seqsplit{Python3} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \seqsplit{include} & \#include \textless{}unordered\_map\textgreater{} & import java.util.*; & \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} new & std::unordered\_map\textless{}int, int\textgreater{} t; & Hashtable\textless{}Integer, Integer\textgreater{} t = new Hashtable\textless{}\textgreater{}(); & d = \{\} \tn % Row Count 8 (+ 4) % Row 3 \SetRowColor{white} add & t.insert(std::make\_pair\textless{}int, int\textgreater{}(key, val)); & t.put(key, val); & d{[}key{]} = val \tn % Row Count 12 (+ 4) % Row 4 \SetRowColor{LightBackground} get & int val = t.at(key); & Integer val = t.get(key); & val = d{[}key{]} \tn % Row Count 14 (+ 2) % Row 5 \SetRowColor{white} \seqsplit{delete} & t.erase(key); & \seqsplit{t.remove(key);} & del d{[}key{]} \tn % Row Count 16 (+ 2) % Row 6 \SetRowColor{LightBackground} \seqsplit{iterate} & & for (Map.Entry\textless{}Integer, Integer\textgreater{} set : t.entrySet()) \{\{\{nl\}\}key=set.getKey();\{\{nl\}\}val=set.getValue();\{\{nl\}\}\} & \tn % Row Count 24 (+ 8) % Row 7 \SetRowColor{white} \seqsplit{iterate} & & \seqsplit{t.forEach((key}, val)-\textgreater{}\{...\}) & for key in d: \tn % Row Count 27 (+ 3) % Row 8 \SetRowColor{LightBackground} check in table & std::unordered\_map\textless{}int, int\textgreater{}::const\_iterator it = t.find(key);\{\{nl\}\}if (it != t.end()) & if \seqsplit{(t.containsKey(key))} & if key in \seqsplit{d.keys():} \tn % Row Count 34 (+ 7) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{1.9764 cm} x{5.9292 cm} x{5.7645 cm} x{2.7999 cm} } \SetRowColor{DarkBackground} \mymulticolumn{4}{x{17.67cm}}{\bf\textcolor{white}{HashMap (cont)}} \tn % Row 9 \SetRowColor{LightBackground} size & s.size() & s.size() & \seqsplit{len(s)} \tn % Row Count 1 (+ 1) % Row 10 \SetRowColor{white} check empty & if (s.empty()) & if (s.isEmpty()) & if not s: \tn % Row Count 4 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}----} \end{tabularx} \par\addvspace{1.3em} \end{document}