SlideShare ist ein Scribd-Unternehmen logo
1 von 131
Downloaden Sie, um offline zu lesen
Collections
Framework
JJUG CCC 2019 spring C1
2019-05-18
#ccc_c1
•
• twitter: @mike_neck
• github : mike-neck
• L is B direct
(Java/Golang)
• Java
( )
• Java
•
• Queue
• Dequeue
• Optional …
•
•
•
• Collections Framework
• API
•
•
Collections
Framework
Java
• Java
Java
java.lang.String
int
com.app.Course
•
Java
java.uti.Set<com.app. >
•
Coffee[] coffees = new Coffee[];
(1)
•
•
•
(Effective Java 3rd ed No.59)
•
String[] array = …
String[] current = array;
String[] array = new String[current.length + 1];
System.arraycopy(current, 0, array, 0, current.length);
array[current.length] = "foo";
List<E>
List<String> list = …
list.add("foo");
(2)
•
• Java
•
Coffee
CaffeMocha
Coffee[]
CaffeMocha[]
Java CaffeMocha Coffee
CaffeMocha Coffee
Coffee
CaffeMocha
Coffee[]
CaffeMocha[]
Java CaffeMocha
Coffee
Coffee
CaffeMocha
Coffee[]
CaffeMocha[]
CaffeMocha[] CaffeMocha
CaffeMocha
( Coffee )
CaffeMocha[] caffeMochaArray = new CaffeMocha[1];
Coffee[] coffeeArray = caffeMochaArray;
coffeeArray[0] = new American(); // ArrayStoreException
Coffee Coffee
American
List<E>
(Java 5 )
Coffee
CaffeMocha
List<Coffee>
List<CaffeMocha>
List<Coffee> List<CaffeMocha>
List<CaffeMocha> caffeMochaList = new ArrayList<>();
List<Coffee> coffeeList = caffeMochaList; // compile error
List<Coffee> List<CaffeMocha>
List<Coffee>
List<CaffeMocha>
Collections Framework
•
• Java
• Collections Framework
• Collections Framework
API
• API
•
Iterable<T>
Collection<E>
List<E> Set<E> Map<K,V>
SortedSet<E> SortedMap<K,V>
Set<E>
• ( )
• ( )
SortedSet<E>
•
• ( )
List<E>
• (
)
•
0 1 2 3 4 5
Map<K,V>
• K (Set) V
• ( -> )
350JPY
550JPY
450JPY
350JPY
Collection<E>
• ( )
• / / / /
•
•
• ( )
•
•
•
UnsupportedOperationException
( )
!
Iterable<T>
Iterable<T>
Collection<E>
List<E> Set<E> Map<K,V>
Iterable<E>
• Iterator<E> iterator()
• Iterator<E> ( )
Iterable<String> iterable = ...;
Iterator<String> iterator = iterable.iterator();
while(iterator.hasNext()) {
String string = iterator.next();
System.out.println(string);
}
Iterable<E> (1)
• Iterable<E> for
Iterable<String> iterable = ...;
for(String item : iterable) {
• forEach(Consumer<? extends E>)
Iterable<E> (2)
Iterable<String> iterable = ...;
iterable.forEach(string -> System.out.println(string));
Collection<E>
Iterable<E>
Collection<E>
List<E> Set<E> Map<K,V>
Collection<E>
•
• boolean isEmpty()
• int size()
•
• boolean contains(Object)
• boolean
containsAll(Collection<?>)
• /
• E[] toArray(E[])
• Stream<E> stream()
•
• boolean add(E)
• boolean addAll(Collection<E>)
•
• boolean remove(E)
• true
• boolean removeAll(Collection<?>)
• boolean retainAll(Collection<?>)
• boolean removeIf(Predicate<? super E>)
• 1 true
•
• void clear()
!
!
Collection<E>
• ID
Collection<E>
public Collection<CoffeeSale> findCoffeeSales(
Instant date, Collection<CoffeeId> coffeeIds) {
// cofeeIds 0 return
if (coffeeIds.isEmpty()) {
return Collections.emptyList();
}
//
}
removeAll(Collection)
collection.removeAll(parameter);
collection parametercollection
retainAll(Collection)
collection.retainAll(parameter);
parametercollection
Set<E>
Iterable<E>
Collection<E>
List<E> Set<E> Map<K,V>
SortedSet<E> SortedMap<K,V>
Collection<E>
Collection<E>
( ) Set<E>
List<E>
Iterable<E>
Collection<E>
List<E> Set<E> Map<K,V>
List<E>
•
• E get(int)
•
• int indexOf(Object)
• int lastIndexOf(Object)
• List
• List<E> subList(int, int)
• ( )
• void add(int, E)
• void addAll(int,
Collection<E>)
•
• void set(int, E)
• void
replaceAll(UnrayOperator<E>
)
•
• void sort(Comparator<E>)
•
• E remove(int)
!
!
List#remove(int)
List<Integer> list = new ArrayList<>(
List.of(1, 2, 3, 4, 5));
// remove(int)? remove(E)?
list.remove(1);
!
Map<K,V>
Iterable<E>
Collection<E>
List<E> Set<E> Map<K,V>
Map<K,V>
•
• V get(K)
• V getOrDefault(K,V)
•
• boolean
containsKey(Object)
• boolean
containsValue(Object)
•
• int size()
• boolean isEmpty()
• /
• Set<K> keySet()
• Collection<V> values()
• Set<Map.Entry<K,V>>
entrySet()
• void forEach(BiConsumer<?
super K, ? super T>)
Map<K,V>
get
•
Map<CoffeeName, CoffeeProduct> coffees;
CoffeeProduct findProduct(CoffeeName name) {
return coffees.get(name);
}
CoffeeProduct product = coffeeRepository
.findProduct(coffeeName(" "));
Order newOrder = product.createNewOrder(1); // NullPointerException
Map<K,V>
get
• Optional<T>
Map<CoffeeName, CoffeeProduct> coffees;
Optional<CoffeeProduct> findProduct(CoffeeName name) {
return Optional.ofNullable(coffees.get(name));
}
Optional<CoffeeProduct> product = coffeeRepository
.findProduct(coffeeName(" "));
Optional<Order> newOrder = product.map(p -> p.createNewOrder(1));
Map<K,V>
• Java8
• V put(K, V)
• void putAll(Map<? extends
K, ? extends V>)
• Java 8
• V putIfAbsent(K, V)
• V compute(K, BiFunction<?
super K, ? super V, ? extends
V>)
• V computeIfAbsent(K,
Function<? super K, ? extends
V>)
!
• Java 8
• V replace(K, V)
• boolean replace(K, V, V)
• void replaceAll(BiFunction<?
super K, ? super V, ?
extends V>)
• V computeIfPresent(K,
Function<? super K, ?
extends V>)
• V merge(K, V, BiFunction<?
super V, ? super V, ?
extends V>)
put(K,V)
put(K,V)
putIfAbsent(K,V) replace(K,V)
put(K,V)
putIfAbsent/replace
compute
•
• Stream
(10 ) DrinkProduct
DrinkName
DrinkCategory
Price
Map<DrinkCategory,List<DrinkProduct>> groupByCategory(
List<DrinkProduct> list) {
Map<DrinkCategory,List<DrinkProduct>> map = new HashMap<>();
for(DrinkProduct product: list) {
if(!map.containsKey(product.category)) {
map.put(product.category, new ArrayList<>());
}
map.get(product.category).add(product);
}
return Collections.unmodifiableMap(map);
}
Map<DrinkCategory,List<DrinkProduct>> groupByCategory(
List<DrinkProduct> list) {
Map<DrinkCategory,List<DrinkProduct>> map = new HashMap<>();
for(DrinkProduct product: list) {
map.computeIfAbsent(product.category, k -> new ArrayList<>())
.add(product);
}
return Collections.unmodifiableMap(map);
}
Map<K,V>
•
• V remove(Object)
• boolean remove(Object, Object)
•
• void clear()
!
•
• (Set/List/Map)
•
UnsupportedOperationException
List<E>
• … add/remove/sort
• ArrayList<E> -
List<E>
• LinkedList<E> -
List<E>
ArrayList<E> vs
LinkedList<E>
• pros
• ArrayList<E> -
• LinkedList<E> - /
• cons
• ArrayList<E> -
• LinkedList<E> -
LinkedList Queue
Dequeue(Stack)
ArrayList LinkedList
ArrayList
List<E>
• … add/remove/sort
UnsupportedOperationException
•
• List.of(E…)
• List.copyOf(Collection<? extends E>)
• Arrays.asList(E…)
• Collections.emptyList()
• Collections.singletonList(E)
• Collections.unmodifiableList(List<? extends E>)
Set<E>/SortedSet<E>
• … add/remove
• HashSet<E> - hashCode
Set<E>
• HashMap<E, Object>
• LinkedHashSet<E> - HashSet<E> ( )
Set<E>
• LinkedHashMap<E, Object>
• TreeSet<E> - SortedSet<E> /Comparator<E>
• TreeMap<E, Object>
Set<Coffee>
Set<E> Map<K,V>
Set<Price>
350 JPY
450 JPY
550 JPY
Set<Coffee>
Set<E> Map<K,V>
Set<Price>
350 JPY
450 JPY
550 JPY
Collection<Price>
IdentifiedBy<Coffee>
Set<E> Map<K,V>
350 JPY
350 JPY
450 JPY
550 JPY
Map<Coffee,Price>
Set<E> Map<K,V>
350 JPY
350 JPY
450 JPY
550 JPY
Set<E>
• … add/remove/sort
UnsupportedOperationException
•
• Set.of(E…)
• Set.copyOf(Collection<? extends E>)
• Collections.emptySet()
• Collections.singleton(E)
• Collections.unmodifiableSet(List<? extends E>)
Map<K,V>
• … put/remove
• HashMap<K,V> - hashCode
Map<K,V>
• LinkedHashMap<K,V> - HashMap<K,V>
( )
Map<K,V>
• TreeMap<K,V> - SortedMap<K,V>
HashMap<K,V>
Map<ProductId, DrinkProduct> toMap(SortedSet<DrinkProduct> set) {
Map<ProductId, DrinkProduct> map = new HashMap<>();
for(DrinkProduct product: set) {
map.put(product.id, product);
}
return Collections.unmodifiableMap(map);
}
Map<ProductId, DrinkProduct> map = toMap(products);
map.forEach((id, product) -> System.out.println(id));
HashMap<K,V>
Map<ProductId, DrinkProduct> toMap(SortedSet<DrinkProduct> set) {
Map<ProductId, DrinkProduct> map = new LinkedHashMap<>();
for(DrinkProduct product: set) {
map.put(product.id, product);
}
return Collections.unmodifiableMap(map);
}
Map<ProductId, DrinkProduct> map = toMap(products);
map.forEach((id, product) -> System.out.println(id));
LinkedHashMap<K,V>
Map<K,V>
• … put/remove/compute
UnsupportedOperationException
•
• Map.of(K,V)
• Map.copyOf(Map<? extends K,? extends V>)
• Collections.emptyMap()
• Collections.singletonMap(K,V)
• Collections.unmodifiableMap(Map<? extends K,?
extends V>)
•
•
6
6
•
• equals/hashCode
• ( )
• (
)
• null
• null
• Map<String, ?>
I. equals/hashCode
• equals
contains(containsKey)
• Set<E> add
• HashSet hashCode
hashCode
equals
• : x.equals(x) true (x ≠ null)
• : x.equals(y) true y.equals(x) true
(x ≠ null, y ≠ null)
• : x.equals(y) true y.equals(z) true
z.equals(x) true (x ≠ null, y ≠ null, z ≠ null)
• : x.equals(y)
• x.equals(null) false (x ≠ null)
• equals NullPointerException
hashCode
• equals hashCode
• x.equals(y) true x.hashCode()
y.hashCode()
• hashCode()
• x.equals(y) false x y hashCode()
equals/hashCode
•
• IDE
•
• Lombok
•
• google/auto AutoValue
• IDE
II.
• Java 1.4 Java 5
•
List<String> List
void unsafeAdd(List list, Object o) {
list.add(o);
}
List<String> list = new ArrayList<>(List.of("foo"));
unsafeAdd(list, 100L);
for(String string : list) { // ClassCastException
String.out.println(string);
}
!
<E, F extends E> void unsafeAdd(List<? super E> list, F o) {
list.add(o);
}
List<String> list = new ArrayList<>(List.of("foo"));
unsafeAdd(list, 100L); // compile error
III.
• List<E>
(ArrayList<E>/LinkedList<E>)
(List.of()/Arrays.asList())
• Collections Framework
(add/remove/clear)
void addSomeEntry(List<String> list) {
list.add("bar"); // UnsupportedOperationException
}
List<String> list = List.of("foo");
unsafeAdd(list);
!
•
UnsupportedOperationException
•
• ( )
• ArrayList<E>/
LinkedList<E>
•
List<String> someEntry() {
return List.of("bar"); //
}
List<String> list = new ArrayList<>(List.of(“foo"));
list.addAll(someEntry());
IV. null
• null
• ArrayList<E>/LinkedList<E>/Arrays.asList()/
HashSet<E>/HashMap<K,V>
• null
• List.of()/Set.of()/Map.of() /
TreeSet<E>/TreeMap<E>
• API
null
List<String> someEntry() {
List<String> list = new ArrayList<>();
list.add(null);
list.add("foo");
return list;
}
List<String> list = new ArrayList<>(List.of(“bar"));
list.addAll(someEntry());
return List.copyOf(list)); // NullPointerException
!
null
: null add
( )
List<String> someEntry() {
List<String> list = new ArrayList<>();
list.add("foo");
return list;
}
List<String> list = new ArrayList<>(List.of("bar"));
list.addAll(someEntry());
return List.copyOf(list));
null
: ArrayList
findbugs/spotbugs
class ListBuilder<E>{
final List<E> list = new ListBuilder<>();
final add(@Nonnull E e) {
list.add(e);
}
}
List<String> someEntry() {
ListBuilder<String> listBuilder = new ListBuilder<>();
listBuilder.add("foo");
return listBuilder.getList();
}
V.
null
• IV
•
null
List<String> someEntries(Key key) {
return map.get(key);
}
List<String> list = someEntries();
return list.size(); // NullPointerException
!
null
List<String> someEntries(Key key) {
return map.getOrDefault(key, Collections.emptyList());
}
List<String> list = someEntries();
return list.size(); // 0
VI.
Map<String,Object>
• Map<String,Object>
• Map<String,Object>
•
Map<String,Object>
PUT /users/1234
{“type":"image",
"file":"https://example.com/files/123"}
PUT /users/1234
{"type":"fields",
"name":" ",
"color":"#009933"}
Map<String,Object>
void updateProfile(UserId userId, Map<String,Object> newProfile) {
if(newProfile.get("type") != null &&
newProfile.get("type").equals("image")) {
String file = (String) newProfile.get("file");
if(file == null) {
throw new IllegalArgumentException("invalid parameter");
}
updateProfileImage(userId, newProfile);
} else if(newProfile.get("type") != null &&
newProfile.get(“type").equals("fields")) {
String name = (String) newProfile.get("name");
String color = (String) newProfile.get("color");
String url = (String) newProfile.get("url");
updateNameAndColor(userId, name, color, url);
!
Map<String,Object>
void updateProfileImage(UserId userId, NewProfileImage newProfileImage) {
if(newProfileImage.notHavingImageUrl()) {
throw new IllegalArgumentException("invalid parameter");
}
Optional<ProfileImageUrl> currentUrl = imageRepository.findProfileImageUrl(userId);
if(currentUrl.filter(url -> url.sameUrl(newProfileImage)).isPresent()) {
imageRepository.update(newProfileImage);
}
}
void updateProfileImage(UserId userId, NewProfileFields newProfileFields) {
if(newProfileFields.satisfiesCondition(satisfiesCondition())) {
throw new IllegalArgumentException("invalid parameter");
}
profileRepository.update(newProfileFields);
}
…
•
Acroquest Technology Java (
2017 )
• Joshua Bloch Effective Java 3
( 2018 )
• (Web) Dan Becker, HOW-TO Get started with the
Java Collections Framework(JAVA WORLD FROM IDG,
1998, https://www.javaworld.com/article/2076800/
get-started-with-the-java-collections-
framework.html)
1. ArrayList
ArrayList<E>
(Object[])
add(int, E)
ArrayList<E>
ArrayList<E>
ArrayList<E>
2. LinkedList
LinkedList<E>
previous
next
previous
next
previous
next
first last
Node<E>
LinkedList Node<E>
LinkedList<E>
previous
next
previous
next
previous
next
add(int, E)
LinkedList<E>
previous
next
previous
next
previous
next
Node<E>
previous
next
LinkedList<E>
previous
next
previous
next
previous
next
(next/previous)
previous
next
3. ArrayList vs
LinkedList
ArrayList vs LinkedList
add(E) - throughput/ms
ArrayList
LinkedList
JDK: oracle openjdk 12.0.1 / OS: Amazon Linux2 /
: m5a.large / : Xmx256M,Xms256M
ArrayList vs LinkedList
add(0,E) - throughput/ms
ArrayList
LinkedList
JDK: oracle openjdk 12.0.1 / OS: Amazon Linux2 /
: m5a.large / : Xmx256M,Xms256M
ArrayList vs LinkedList
get(int) - throughput/ms
ArrayList
LinkedList
JDK: oracle openjdk 12.0.1 / OS: Amazon Linux2 /
: m5a.large / : Xmx256M,Xms256M
ArrayList vs LinkedList
forEach(Consumer) - throughput/ms
ArrayList
LinkedList
JDK: oracle openjdk 12.0.1 / OS: Amazon Linux2 /
: m5a.large / : Xmx256M,Xms256M
4. HashMap
HashMap<E>
Node
K key
int hash/K key/V value Node
int hash
V value
next
HashMap<E>
Node (Node[])
length
HashMap<E>
Node index Node hash
mod
Node
hash
length
index
HashMap<E>
index LinkedList
next next
HashMap<E>
index LinkedList
next next
LinkedList
HashMap<E>
LinkedList
hashCode
B
R
left
right
R
5. TreeMap
TreeMap<K,V>
• TreeMap<K,V>
•
•
• K key V value
•
•
• ( )
TreeMap<K,V>
•
• ( )
•
•
•
•
TreeMap<K,V>
74
3
key:
value:
4
key:4 key:7
4 7
TreeMap<K,V>
7
3
key:
value:
4
key:3 key:7
key:3 key:4
3
TreeMap<K,V>
7
key:
value:
4
3
TreeMap<K,V>
7
4
3
← (4)
4
73

Weitere ähnliche Inhalte

Was ist angesagt?

Kotlin decoration - February Berlin Kotlin Meetup
Kotlin decoration - February Berlin Kotlin MeetupKotlin decoration - February Berlin Kotlin Meetup
Kotlin decoration - February Berlin Kotlin MeetupSinan KOZAK
 
The Ring programming language version 1.9 book - Part 54 of 210
The Ring programming language version 1.9 book - Part 54 of 210The Ring programming language version 1.9 book - Part 54 of 210
The Ring programming language version 1.9 book - Part 54 of 210Mahmoud Samir Fayed
 
Tweaking the interactive grid
Tweaking the interactive gridTweaking the interactive grid
Tweaking the interactive gridRoel Hartman
 
Map Reduce: Which Way To Go?
Map Reduce: Which Way To Go?Map Reduce: Which Way To Go?
Map Reduce: Which Way To Go?Ozren Gulan
 
Appengine Java Night #2b
Appengine Java Night #2bAppengine Java Night #2b
Appengine Java Night #2bShinichi Ogawa
 
Appengine Java Night #2a
Appengine Java Night #2aAppengine Java Night #2a
Appengine Java Night #2aShinichi Ogawa
 
ReactでGraphQLを使っている
ReactでGraphQLを使っているReactでGraphQLを使っている
ReactでGraphQLを使っているTakahiro Kobaru
 
Data Structures in javaScript 2015
Data Structures in javaScript 2015Data Structures in javaScript 2015
Data Structures in javaScript 2015Nir Kaufman
 
Creating New Streams: Presented by Dennis Gove, Bloomberg LP
Creating New Streams: Presented by Dennis Gove, Bloomberg LPCreating New Streams: Presented by Dennis Gove, Bloomberg LP
Creating New Streams: Presented by Dennis Gove, Bloomberg LPLucidworks
 
Using JSON with MariaDB and MySQL
Using JSON with MariaDB and MySQLUsing JSON with MariaDB and MySQL
Using JSON with MariaDB and MySQLAnders Karlsson
 
The Ring programming language version 1.5.1 book - Part 43 of 180
The Ring programming language version 1.5.1 book - Part 43 of 180The Ring programming language version 1.5.1 book - Part 43 of 180
The Ring programming language version 1.5.1 book - Part 43 of 180Mahmoud Samir Fayed
 
My Top 5 APEX JavaScript API's
My Top 5 APEX JavaScript API'sMy Top 5 APEX JavaScript API's
My Top 5 APEX JavaScript API'sRoel Hartman
 
React-Native Rendering Performance
React-Native Rendering PerformanceReact-Native Rendering Performance
React-Native Rendering PerformanceInnerFood
 
Reactive Feature Generation with Spark and MLlib by Jeffrey Smith (1)
Reactive Feature Generation with Spark and MLlib by Jeffrey Smith (1)Reactive Feature Generation with Spark and MLlib by Jeffrey Smith (1)
Reactive Feature Generation with Spark and MLlib by Jeffrey Smith (1)Spark Summit
 
Gareth hayes. non alphanumeric javascript-php and shared fuzzing
Gareth hayes. non alphanumeric javascript-php and shared fuzzingGareth hayes. non alphanumeric javascript-php and shared fuzzing
Gareth hayes. non alphanumeric javascript-php and shared fuzzingYury Chemerkin
 

Was ist angesagt? (20)

Beyond Scala Lens
Beyond Scala LensBeyond Scala Lens
Beyond Scala Lens
 
Kotlin decoration - February Berlin Kotlin Meetup
Kotlin decoration - February Berlin Kotlin MeetupKotlin decoration - February Berlin Kotlin Meetup
Kotlin decoration - February Berlin Kotlin Meetup
 
Epic South Disasters
Epic South DisastersEpic South Disasters
Epic South Disasters
 
Swift Study #2
Swift Study #2Swift Study #2
Swift Study #2
 
The Ring programming language version 1.9 book - Part 54 of 210
The Ring programming language version 1.9 book - Part 54 of 210The Ring programming language version 1.9 book - Part 54 of 210
The Ring programming language version 1.9 book - Part 54 of 210
 
SCALA - Functional domain
SCALA -  Functional domainSCALA -  Functional domain
SCALA - Functional domain
 
Tweaking the interactive grid
Tweaking the interactive gridTweaking the interactive grid
Tweaking the interactive grid
 
Map Reduce: Which Way To Go?
Map Reduce: Which Way To Go?Map Reduce: Which Way To Go?
Map Reduce: Which Way To Go?
 
Appengine Java Night #2b
Appengine Java Night #2bAppengine Java Night #2b
Appengine Java Night #2b
 
Appengine Java Night #2a
Appengine Java Night #2aAppengine Java Night #2a
Appengine Java Night #2a
 
ReactでGraphQLを使っている
ReactでGraphQLを使っているReactでGraphQLを使っている
ReactでGraphQLを使っている
 
Functional programming in scala
Functional programming in scalaFunctional programming in scala
Functional programming in scala
 
Data Structures in javaScript 2015
Data Structures in javaScript 2015Data Structures in javaScript 2015
Data Structures in javaScript 2015
 
Creating New Streams: Presented by Dennis Gove, Bloomberg LP
Creating New Streams: Presented by Dennis Gove, Bloomberg LPCreating New Streams: Presented by Dennis Gove, Bloomberg LP
Creating New Streams: Presented by Dennis Gove, Bloomberg LP
 
Using JSON with MariaDB and MySQL
Using JSON with MariaDB and MySQLUsing JSON with MariaDB and MySQL
Using JSON with MariaDB and MySQL
 
The Ring programming language version 1.5.1 book - Part 43 of 180
The Ring programming language version 1.5.1 book - Part 43 of 180The Ring programming language version 1.5.1 book - Part 43 of 180
The Ring programming language version 1.5.1 book - Part 43 of 180
 
My Top 5 APEX JavaScript API's
My Top 5 APEX JavaScript API'sMy Top 5 APEX JavaScript API's
My Top 5 APEX JavaScript API's
 
React-Native Rendering Performance
React-Native Rendering PerformanceReact-Native Rendering Performance
React-Native Rendering Performance
 
Reactive Feature Generation with Spark and MLlib by Jeffrey Smith (1)
Reactive Feature Generation with Spark and MLlib by Jeffrey Smith (1)Reactive Feature Generation with Spark and MLlib by Jeffrey Smith (1)
Reactive Feature Generation with Spark and MLlib by Jeffrey Smith (1)
 
Gareth hayes. non alphanumeric javascript-php and shared fuzzing
Gareth hayes. non alphanumeric javascript-php and shared fuzzingGareth hayes. non alphanumeric javascript-php and shared fuzzing
Gareth hayes. non alphanumeric javascript-php and shared fuzzing
 

Ähnlich wie jjug-ccc 2019 Spring 発表資料 Collections Framework 入門 #jjug #jjug_ccc #ccc_c1

Collections Framework Beginners Guide 2
Collections Framework Beginners Guide 2Collections Framework Beginners Guide 2
Collections Framework Beginners Guide 2Kenji HASUNUMA
 
Collections Framework Begineers guide 2
Collections Framework Begineers guide 2Collections Framework Begineers guide 2
Collections Framework Begineers guide 2Kenji HASUNUMA
 
Swift, functional programming, and the future of Objective-C
Swift, functional programming, and the future of Objective-CSwift, functional programming, and the future of Objective-C
Swift, functional programming, and the future of Objective-CAlexis Gallagher
 
Will it Blend? - ScalaSyd February 2015
Will it Blend? - ScalaSyd February 2015Will it Blend? - ScalaSyd February 2015
Will it Blend? - ScalaSyd February 2015Filippo Vitale
 
Collections in Java
Collections in JavaCollections in Java
Collections in JavaKhasim Cise
 
Patterns for slick database applications
Patterns for slick database applicationsPatterns for slick database applications
Patterns for slick database applicationsSkills Matter
 
Useful javascript
Useful javascriptUseful javascript
Useful javascriptLei Kang
 
Happy Go Programming
Happy Go ProgrammingHappy Go Programming
Happy Go ProgrammingLin Yo-An
 
Alasql JavaScript SQL Database Library: User Manual
Alasql JavaScript SQL Database Library: User ManualAlasql JavaScript SQL Database Library: User Manual
Alasql JavaScript SQL Database Library: User ManualAndrey Gershun
 
An overview of Python 2.7
An overview of Python 2.7An overview of Python 2.7
An overview of Python 2.7decoupled
 
DB API Usage - How to write DBAL compliant code
DB API Usage - How to write DBAL compliant codeDB API Usage - How to write DBAL compliant code
DB API Usage - How to write DBAL compliant codeKarsten Dambekalns
 
CON5423-GS-Collections-and-Java-8-Functional-Fluent-Friendly-and-Fun.pptx
CON5423-GS-Collections-and-Java-8-Functional-Fluent-Friendly-and-Fun.pptxCON5423-GS-Collections-and-Java-8-Functional-Fluent-Friendly-and-Fun.pptx
CON5423-GS-Collections-and-Java-8-Functional-Fluent-Friendly-and-Fun.pptxskypy045
 
楽々Scalaプログラミング
楽々Scalaプログラミング楽々Scalaプログラミング
楽々ScalaプログラミングTomoharu ASAMI
 
第49回Php勉強会@関東 Datasource
第49回Php勉強会@関東 Datasource第49回Php勉強会@関東 Datasource
第49回Php勉強会@関東 DatasourceKaz Watanabe
 

Ähnlich wie jjug-ccc 2019 Spring 発表資料 Collections Framework 入門 #jjug #jjug_ccc #ccc_c1 (20)

Collections Framework Beginners Guide 2
Collections Framework Beginners Guide 2Collections Framework Beginners Guide 2
Collections Framework Beginners Guide 2
 
Collections Framework Begineers guide 2
Collections Framework Begineers guide 2Collections Framework Begineers guide 2
Collections Framework Begineers guide 2
 
Swift, functional programming, and the future of Objective-C
Swift, functional programming, and the future of Objective-CSwift, functional programming, and the future of Objective-C
Swift, functional programming, and the future of Objective-C
 
Will it Blend? - ScalaSyd February 2015
Will it Blend? - ScalaSyd February 2015Will it Blend? - ScalaSyd February 2015
Will it Blend? - ScalaSyd February 2015
 
Collections
CollectionsCollections
Collections
 
Kpi driven-java-development
Kpi driven-java-developmentKpi driven-java-development
Kpi driven-java-development
 
Collections in Java
Collections in JavaCollections in Java
Collections in Java
 
Patterns for slick database applications
Patterns for slick database applicationsPatterns for slick database applications
Patterns for slick database applications
 
Collections
CollectionsCollections
Collections
 
Useful javascript
Useful javascriptUseful javascript
Useful javascript
 
Happy Go Programming
Happy Go ProgrammingHappy Go Programming
Happy Go Programming
 
Alasql JavaScript SQL Database Library: User Manual
Alasql JavaScript SQL Database Library: User ManualAlasql JavaScript SQL Database Library: User Manual
Alasql JavaScript SQL Database Library: User Manual
 
Command Liner with Scala
Command Liner with ScalaCommand Liner with Scala
Command Liner with Scala
 
An overview of Python 2.7
An overview of Python 2.7An overview of Python 2.7
An overview of Python 2.7
 
A tour of Python
A tour of PythonA tour of Python
A tour of Python
 
DB API Usage - How to write DBAL compliant code
DB API Usage - How to write DBAL compliant codeDB API Usage - How to write DBAL compliant code
DB API Usage - How to write DBAL compliant code
 
Best core & advanced java classes in mumbai
Best core & advanced java classes in mumbaiBest core & advanced java classes in mumbai
Best core & advanced java classes in mumbai
 
CON5423-GS-Collections-and-Java-8-Functional-Fluent-Friendly-and-Fun.pptx
CON5423-GS-Collections-and-Java-8-Functional-Fluent-Friendly-and-Fun.pptxCON5423-GS-Collections-and-Java-8-Functional-Fluent-Friendly-and-Fun.pptx
CON5423-GS-Collections-and-Java-8-Functional-Fluent-Friendly-and-Fun.pptx
 
楽々Scalaプログラミング
楽々Scalaプログラミング楽々Scalaプログラミング
楽々Scalaプログラミング
 
第49回Php勉強会@関東 Datasource
第49回Php勉強会@関東 Datasource第49回Php勉強会@関東 Datasource
第49回Php勉強会@関東 Datasource
 

Mehr von Shinya Mochida

サーバーサイド Kotlin のテストフレームワーク事情
サーバーサイド Kotlin のテストフレームワーク事情サーバーサイド Kotlin のテストフレームワーク事情
サーバーサイド Kotlin のテストフレームワーク事情Shinya Mochida
 
IntelliJ IDEA を完全にマスターする話
IntelliJ IDEA を完全にマスターする話IntelliJ IDEA を完全にマスターする話
IntelliJ IDEA を完全にマスターする話Shinya Mochida
 
クリーンアーキテクチャーを強制する方法を考えてみた(N番煎じ) #すえなみチャンス暑気払い
クリーンアーキテクチャーを強制する方法を考えてみた(N番煎じ) #すえなみチャンス暑気払いクリーンアーキテクチャーを強制する方法を考えてみた(N番煎じ) #すえなみチャンス暑気払い
クリーンアーキテクチャーを強制する方法を考えてみた(N番煎じ) #すえなみチャンス暑気払いShinya Mochida
 
swift-log について
swift-log についてswift-log について
swift-log についてShinya Mochida
 
Java プログラマーのための Swift 入門 #中央線Meetup
Java プログラマーのための Swift 入門 #中央線MeetupJava プログラマーのための Swift 入門 #中央線Meetup
Java プログラマーのための Swift 入門 #中央線MeetupShinya Mochida
 
swift-nio のアーキテクチャーと RxHttpClient
swift-nio のアーキテクチャーと RxHttpClientswift-nio のアーキテクチャーと RxHttpClient
swift-nio のアーキテクチャーと RxHttpClientShinya Mochida
 
JJUG CCC 2018 Spring - I-7 (俺が)はじめての Netty
JJUG CCC 2018 Spring - I-7 (俺が)はじめての NettyJJUG CCC 2018 Spring - I-7 (俺が)はじめての Netty
JJUG CCC 2018 Spring - I-7 (俺が)はじめての NettyShinya Mochida
 
JJUG CCC 2018 Spring LT Spring Boot アプリケーションの起動を速くする 108 の Tips #jjug_ccc #jjug
JJUG CCC 2018 Spring LT Spring Boot アプリケーションの起動を速くする 108 の Tips #jjug_ccc #jjugJJUG CCC 2018 Spring LT Spring Boot アプリケーションの起動を速くする 108 の Tips #jjug_ccc #jjug
JJUG CCC 2018 Spring LT Spring Boot アプリケーションの起動を速くする 108 の Tips #jjug_ccc #jjugShinya Mochida
 
Spring Boot アプリケーションの起動をほんの少し気持ちだけ速くしてみた
Spring Boot アプリケーションの起動をほんの少し気持ちだけ速くしてみたSpring Boot アプリケーションの起動をほんの少し気持ちだけ速くしてみた
Spring Boot アプリケーションの起動をほんの少し気持ちだけ速くしてみたShinya Mochida
 
Javaモジュールシステム雑なまとめ
Javaモジュールシステム雑なまとめJavaモジュールシステム雑なまとめ
Javaモジュールシステム雑なまとめShinya Mochida
 
JavaのStreamで学ぶ遅延処理実装パターン
JavaのStreamで学ぶ遅延処理実装パターンJavaのStreamで学ぶ遅延処理実装パターン
JavaのStreamで学ぶ遅延処理実装パターンShinya Mochida
 
gradle2.4のルールベースモデルコンフィギュレーション
gradle2.4のルールベースモデルコンフィギュレーションgradle2.4のルールベースモデルコンフィギュレーション
gradle2.4のルールベースモデルコンフィギュレーションShinya Mochida
 
On stream-lazy-computation
On stream-lazy-computationOn stream-lazy-computation
On stream-lazy-computationShinya Mochida
 
Java8のstreamをダラダラまとめてみる
Java8のstreamをダラダラまとめてみるJava8のstreamをダラダラまとめてみる
Java8のstreamをダラダラまとめてみるShinya Mochida
 
ドラクエの金銭感覚
ドラクエの金銭感覚ドラクエの金銭感覚
ドラクエの金銭感覚Shinya Mochida
 
30億のデバイスで走るjavaを支えるjavaエコシステム
30億のデバイスで走るjavaを支えるjavaエコシステム30億のデバイスで走るjavaを支えるjavaエコシステム
30億のデバイスで走るjavaを支えるjavaエコシステムShinya Mochida
 
Intelli j vs-eclipse-by-mike-neck #jbugj
Intelli j vs-eclipse-by-mike-neck #jbugjIntelli j vs-eclipse-by-mike-neck #jbugj
Intelli j vs-eclipse-by-mike-neck #jbugjShinya Mochida
 

Mehr von Shinya Mochida (20)

サーバーサイド Kotlin のテストフレームワーク事情
サーバーサイド Kotlin のテストフレームワーク事情サーバーサイド Kotlin のテストフレームワーク事情
サーバーサイド Kotlin のテストフレームワーク事情
 
IntelliJ IDEA を完全にマスターする話
IntelliJ IDEA を完全にマスターする話IntelliJ IDEA を完全にマスターする話
IntelliJ IDEA を完全にマスターする話
 
クリーンアーキテクチャーを強制する方法を考えてみた(N番煎じ) #すえなみチャンス暑気払い
クリーンアーキテクチャーを強制する方法を考えてみた(N番煎じ) #すえなみチャンス暑気払いクリーンアーキテクチャーを強制する方法を考えてみた(N番煎じ) #すえなみチャンス暑気払い
クリーンアーキテクチャーを強制する方法を考えてみた(N番煎じ) #すえなみチャンス暑気払い
 
swift-log について
swift-log についてswift-log について
swift-log について
 
Vim 入門
Vim 入門Vim 入門
Vim 入門
 
Java プログラマーのための Swift 入門 #中央線Meetup
Java プログラマーのための Swift 入門 #中央線MeetupJava プログラマーのための Swift 入門 #中央線Meetup
Java プログラマーのための Swift 入門 #中央線Meetup
 
swift-nio のアーキテクチャーと RxHttpClient
swift-nio のアーキテクチャーと RxHttpClientswift-nio のアーキテクチャーと RxHttpClient
swift-nio のアーキテクチャーと RxHttpClient
 
JJUG CCC 2018 Spring - I-7 (俺が)はじめての Netty
JJUG CCC 2018 Spring - I-7 (俺が)はじめての NettyJJUG CCC 2018 Spring - I-7 (俺が)はじめての Netty
JJUG CCC 2018 Spring - I-7 (俺が)はじめての Netty
 
JJUG CCC 2018 Spring LT Spring Boot アプリケーションの起動を速くする 108 の Tips #jjug_ccc #jjug
JJUG CCC 2018 Spring LT Spring Boot アプリケーションの起動を速くする 108 の Tips #jjug_ccc #jjugJJUG CCC 2018 Spring LT Spring Boot アプリケーションの起動を速くする 108 の Tips #jjug_ccc #jjug
JJUG CCC 2018 Spring LT Spring Boot アプリケーションの起動を速くする 108 の Tips #jjug_ccc #jjug
 
Spring Boot アプリケーションの起動をほんの少し気持ちだけ速くしてみた
Spring Boot アプリケーションの起動をほんの少し気持ちだけ速くしてみたSpring Boot アプリケーションの起動をほんの少し気持ちだけ速くしてみた
Spring Boot アプリケーションの起動をほんの少し気持ちだけ速くしてみた
 
Javaモジュールシステム雑なまとめ
Javaモジュールシステム雑なまとめJavaモジュールシステム雑なまとめ
Javaモジュールシステム雑なまとめ
 
Kotlin as an AltJS
Kotlin as an AltJSKotlin as an AltJS
Kotlin as an AltJS
 
JavaのStreamで学ぶ遅延処理実装パターン
JavaのStreamで学ぶ遅延処理実装パターンJavaのStreamで学ぶ遅延処理実装パターン
JavaのStreamで学ぶ遅延処理実装パターン
 
gradle2.4のルールベースモデルコンフィギュレーション
gradle2.4のルールベースモデルコンフィギュレーションgradle2.4のルールベースモデルコンフィギュレーション
gradle2.4のルールベースモデルコンフィギュレーション
 
On stream-lazy-computation
On stream-lazy-computationOn stream-lazy-computation
On stream-lazy-computation
 
Stream脳の作り方
Stream脳の作り方Stream脳の作り方
Stream脳の作り方
 
Java8のstreamをダラダラまとめてみる
Java8のstreamをダラダラまとめてみるJava8のstreamをダラダラまとめてみる
Java8のstreamをダラダラまとめてみる
 
ドラクエの金銭感覚
ドラクエの金銭感覚ドラクエの金銭感覚
ドラクエの金銭感覚
 
30億のデバイスで走るjavaを支えるjavaエコシステム
30億のデバイスで走るjavaを支えるjavaエコシステム30億のデバイスで走るjavaを支えるjavaエコシステム
30億のデバイスで走るjavaを支えるjavaエコシステム
 
Intelli j vs-eclipse-by-mike-neck #jbugj
Intelli j vs-eclipse-by-mike-neck #jbugjIntelli j vs-eclipse-by-mike-neck #jbugj
Intelli j vs-eclipse-by-mike-neck #jbugj
 

Kürzlich hochgeladen

Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 

Kürzlich hochgeladen (20)

Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 

jjug-ccc 2019 Spring 発表資料 Collections Framework 入門 #jjug #jjug_ccc #ccc_c1