Public speaking course notes Read "Dynamo, Amazon’s Highly Available Key-value Store" Read "Bigtable, A Distributed Storage System for Structured Data" Read "Streaming Systems" 3, Watermarks Read "Streaming Systems" 1&2, Streaming 101 Read "F1, a distributed SQL database that scales" Read "Zanzibar, Google’s Consistent, Global Authorization System" Read "Spanner, Google's Globally-Distributed Database" Read "Designing Data-intensive applications" 12, The Future of Data Systems IOS development with Swift Read "Designing Data-intensive applications" 10&11, Batch and Stream Processing Read "Designing Data-intensive applications" 9, Consistency and Consensus Read "Designing Data-intensive applications" 8, Distributed System Troubles Read "Designing Data-intensive applications" 7, Transactions Read "Designing Data-intensive applications" 6, Partitioning Read "Designing Data-intensive applications" 5, Replication Read "Designing Data-intensive applications" 3&4, Storage, Retrieval, Encoding Read "Designing Data-intensive applications" 1&2, Foundation of Data Systems Three cases of binary search TAMU Operating System 2 Memory Management TAMU Operating System 1 Introduction Overview in cloud computing 2 TAMU Operating System 7 Virtualization TAMU Operating System 6 File System TAMU Operating System 5 I/O and Disk Management TAMU Operating System 4 Synchronization TAMU Operating System 3 Concurrency and Threading TAMU Computer Networks 5 Data Link Layer TAMU Computer Networks 4 Network Layer TAMU Computer Networks 3 Transport Layer TAMU Computer Networks 2 Application Layer TAMU Computer Networks 1 Introduction Overview in distributed systems and cloud computing 1 A well-optimized Union-Find implementation, in Java A heap implementation supporting deletion TAMU Advanced Algorithms 3, Maximum Bandwidth Path (Dijkstra, MST, Linear) TAMU Advanced Algorithms 2, B+ tree and Segment Intersection TAMU Advanced Algorithms 1, BST, 2-3 Tree and Heap TAMU AI, Searching problems Factorization Machine and Field-aware Factorization Machine for CTR prediction TAMU Neural Network 10 Information-Theoretic Models TAMU Neural Network 9 Principal Component Analysis TAMU Neural Network 8 Neurodynamics TAMU Neural Network 7 Self-Organizing Maps TAMU Neural Network 6 Deep Learning Overview TAMU Neural Network 5 Radial-Basis Function Networks TAMU Neural Network 4 Multi-Layer Perceptrons TAMU Neural Network 3 Single-Layer Perceptrons Princeton Algorithms P1W6 Hash Tables & Symbol Table Applications Stanford ML 11 Application Example Photo OCR Stanford ML 10 Large Scale Machine Learning Stanford ML 9 Anomaly Detection and Recommender Systems Stanford ML 8 Clustering & Principal Component Analysis Princeton Algorithms P1W5 Balanced Search Trees TAMU Neural Network 2 Learning Processes TAMU Neural Network 1 Introduction Stanford ML 7 Support Vector Machine Stanford ML 6 Evaluate Algorithms Princeton Algorithms P1W4 Priority Queues and Symbol Tables Stanford ML 5 Neural Networks Learning Princeton Algorithms P1W3 Mergesort and Quicksort Stanford ML 4 Neural Networks Basics Princeton Algorithms P1W2 Stack and Queue, Basic Sorts Stanford ML 3 Classification Problems Stanford ML 2 Multivariate Regression and Normal Equation Princeton Algorithms P1W1 Union and Find Stanford ML 1 Introduction and Parameter Learning

Java sort tricks

2017-07-29

Sort lists

lambda expression

List<Integer> list = new ArrayList<>();
list.sort((o1, o2) -> {
    if (o1.equals(o2)) {
        return 0;
    }
    return o1 > o2 ? 1 : -1; // ascending sort

});

Sort a list and limit the size

class Person {
    public String name;
    public int age;
}
int sizeLimit = 10;
List<Person> values = new ArrayList<>();
List<Person> valuesSorted = values.stream().sorted(new Comparator<Person>() {
                @Override
                public int compare(Person o1, Person o2) {
                    if (o1.age == o2.age) {
                        return 0;
                    }
                    return (o1.age > o2.age) ? -1 : 1; // descending sort
                }
            }).limit(sizeLimit).collect(Collectors.toList());

Sort object array

import java.util.Arrays;
public class Test {
    class Plant implements Comparable {
    	int x;
    	int y;
    	@Override
    	public int compareTo(Object o) {
    		Plant obj = (Plant) o;
    		return (this.x == obj.x)? this.y - obj.y : this.x - obj.x;
    	}
        Plant(int x, int y) {
            this.x = x;
            this.y = y;
        }
    }

    Plant[] arr = {};
    Plant ele = new Plant(1, 2);
    Arrays.sort(arr);
    // binary search
    Arrays.binarySearch(arr, ele);
}

Sort maps

Map traversal

    public void count(int[] arr)
    {
        int num=0;
        Map<Integer,Integer> map = new HashMap<Integer,Integer>();
        for(int i=1; i<=10; i++)
        {
            map.put(i,num);
        }
        for(int i=0; i<arr.length; i++)
        {
            /*Iterator it = map.entrySet().iterator();   
            while(it.hasNext())
                {    
                    Map.Entry m=(Map.Entry)it.next();
                    if(arr[i]==(int)m.getKey())
                        map.put((int)m.getKey(),(int)m.getValue()+1);
                }*/
                for(Map.Entry<Integer,Integer> m:map.entrySet())
                {
                    if(arr[i] == (int) m.getKey())
                        map.put((int) m.getKey(),(int) m.getValue()+1);
                }
        }
        for(Map.Entry<Integer,Integer> m : map.entrySet())
        {
            System.out.println(m.getKey() + " count is " + m.getValue() + ".");
        }
    }

Sort map based on value

HashMap<String, Integer> map = new HashMap<>();
map.put("a",4);
map.put("b", 3);
map.put("c",1);
map.put("d",10);
List<Map.Entry<String,Integer>> list =
        new ArrayList<>(map.entrySet());
list.sort(new Comparator<Map.Entry<String, Integer>>() {
    @Override
    public int compare(Map.Entry<String, Integer> o1,
                       Map.Entry<String, Integer> o2) {
        return (o2.getValue() - o1.getValue());
    }
});
for (Map.Entry<String,Integer> item : list) {
    System.out.println(item.getKey() + " " + item.getValue());
}

Creative Commons License
Melon blog is created by melonskin. This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
© 2016-2024. All rights reserved by melonskin. Powered by Jekyll.