Skip to content

Instantly share code, notes, and snippets.

@gbajaj
gbajaj / CustomRecordExample.kt
Created July 4, 2025 23:28
Convert int [][] into a list of custom Records
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class CustomRecordExample {
// Your static nested class is defined here
static class Record {
int first;
@gbajaj
gbajaj / ArrayListIntegerToIntArray.kt
Created July 4, 2025 23:13
Convert ArrayList<Integer> to a primitive int[] array
import java.util.ArrayList;
import java.util.Arrays;
// Your ArrayList of Integers
ArrayList<Integer> arrayList = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
// Convert it to a primitive int[] array
int[] primitiveArray = arrayList.stream()
.mapToInt(Integer::intValue)
.toArray();
@gbajaj
gbajaj / arrToArrayListOfIntegers.java
Created July 4, 2025 23:11
Converts int [] to ArrayList<Integer>
import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.Collectors;
int[] primitiveArray = {1, 2, 3, 4, 5};
// Use Arrays.stream() to convert the int[] to an IntStream, then collect it
ArrayList<Integer> arrayList = Arrays.stream(primitiveArray)
.boxed() // Converts int to Integer
.collect(Collectors.toCollection(ArrayList::new));
import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
/**
* A ViewModel to manage the logic of a single item in our shopping cart.
*/
class ShoppingCartItemViewModel {
// A private MutableStateFlow to hold the current quantity of the item.
// This will be updated by the UI when the user clicks the '+' or '-' buttons.
import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
/**
* A ViewModel to manage the logic of a single item in our shopping cart.
*/
class ShoppingCartItemViewModel {
// A private MutableStateFlow to hold the current quantity of the item.
// This will be updated by the UI when the user clicks the '+' or '-' buttons.
@gbajaj
gbajaj / kt
Created July 2, 2025 05:12
flatMapLatest
fun <T, R> Flow<T>.flatMapLatest(transform: suspend (T) -> Flow<R>): Flow<R> = flow {
// This coroutineScope is key to managing cancellation of the inner flow
coroutineScope {
var previousJob: Job? = null
collect { value ->
// Cancel any ongoing inner flow collection
previousJob?.cancelAndJoin()
// Launch new inner flow collector in a new coroutine
@gbajaj
gbajaj / .kt
Created July 2, 2025 05:01
DistinctUntilChanged
fun <T> Flow<T>.distinctUntilChanged(comparator: (T, T) -> Boolean): Flow<T> = flow {
var previous: T? = null
var isFirst = true
collect { value ->
if (isFirst || !comparator(previous!!, value)) {
emit(value)
previous = value
isFirst = false
}
import kotlinx.coroutines.*
class Debouncer(private val delayMs: Long = 300) {
private var debounceJob: Job? = null
fun submit(scope: CoroutineScope, action: () -> Unit) {
debounceJob?.cancel()
debounceJob = scope.launch {
delay(delayMs)
action()
@gbajaj
gbajaj / codeFile.kt
Created June 5, 2025 22:13
Test Gist for Obsidian
fun testGist() {
println("Hello world!")
}
@gbajaj
gbajaj / cs
Created June 15, 2021 23:20
Strart
#region Using declarations
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;