Merge remote-tracking branch 'eugenp/master'
This commit is contained in:
commit
5e0920b8f4
@ -25,7 +25,9 @@ public class ArrayInverter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Object[] invertUsingStreams(final Object[] array) {
|
public Object[] invertUsingStreams(final Object[] array) {
|
||||||
return IntStream.range(1, array.length + 1).mapToObj(i -> array[array.length - i]).toArray();
|
return IntStream.rangeClosed(1, array.length)
|
||||||
|
.mapToObj(i -> array[array.length - i])
|
||||||
|
.toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void invertUsingCommonsLang(Object[] array) {
|
public void invertUsingCommonsLang(Object[] array) {
|
||||||
|
@ -0,0 +1,60 @@
|
|||||||
|
package com.baeldung.collection;
|
||||||
|
|
||||||
|
import java.util.ConcurrentModificationException;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.TreeMap;
|
||||||
|
|
||||||
|
import org.hamcrest.Matchers;
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class WhenComparingTreeMapVsHashMap {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenInsertObjectsTreeMap_thenNaturalOrder() {
|
||||||
|
Map<Integer, String> treemap = new TreeMap<>();
|
||||||
|
treemap.put(3, "TreeMap");
|
||||||
|
treemap.put(2, "vs");
|
||||||
|
treemap.put(1, "HashMap");
|
||||||
|
Assert.assertThat(treemap.keySet(), Matchers.contains(1, 2, 3));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = NullPointerException.class)
|
||||||
|
public void whenInsertNullInTreeMap_thenException() {
|
||||||
|
Map<Integer, String> treemap = new TreeMap<>();
|
||||||
|
treemap.put(null, "NullPointerException");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenInsertObjectsHashMap_thenRandomOrder() {
|
||||||
|
Map<Integer, String> hashmap = new HashMap<>();
|
||||||
|
hashmap.put(3, "TreeMap");
|
||||||
|
hashmap.put(2, "vs");
|
||||||
|
hashmap.put(1, "HashMap");
|
||||||
|
Assert.assertThat(hashmap.keySet(), Matchers.containsInAnyOrder(1, 2, 3));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenInsertNullInHashMap_thenInsertsNull() {
|
||||||
|
Map<Integer, String> hashmap = new HashMap<>();
|
||||||
|
hashmap.put(null, null);
|
||||||
|
Assert.assertNull(hashmap.get(null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenHashMapAndTreeMap_whenputDuplicates_thenOnlyUnique() {
|
||||||
|
Map<Integer, String> treeMap = new HashMap<>();
|
||||||
|
treeMap.put(1, "Baeldung");
|
||||||
|
treeMap.put(1, "Baeldung");
|
||||||
|
|
||||||
|
Assert.assertTrue(treeMap.size() == 1);
|
||||||
|
|
||||||
|
Map<Integer, String> treeMap2 = new TreeMap<>();
|
||||||
|
treeMap2.put(1, "Baeldung");
|
||||||
|
treeMap2.put(1, "Baeldung");
|
||||||
|
|
||||||
|
Assert.assertTrue(treeMap2.size() == 1);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
package com.baeldung.spring.cloud.connectors.heroku.book;
|
||||||
|
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.GeneratedValue;
|
||||||
|
import javax.persistence.GenerationType;
|
||||||
|
import javax.persistence.Id;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
public class Book {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private Long id;
|
||||||
|
private String title;
|
||||||
|
private String author;
|
||||||
|
|
||||||
|
public Long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(Long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTitle() {
|
||||||
|
return title;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTitle(String title) {
|
||||||
|
this.title = title;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAuthor() {
|
||||||
|
return author;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAuthor(String author) {
|
||||||
|
this.author = author;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.baeldung.spring.cloud.connectors.heroku.book;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/books")
|
||||||
|
public class BookController {
|
||||||
|
|
||||||
|
private final BookService bookService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
public BookController(BookService bookService) {
|
||||||
|
this.bookService = bookService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/{bookId}")
|
||||||
|
public Book findBook(@PathVariable Long bookId) {
|
||||||
|
return bookService.findBookById(bookId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping
|
||||||
|
public Book createBook(@RequestBody Book book) {
|
||||||
|
return bookService.createBook(book);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
package com.baeldung.spring.cloud.connectors.heroku.book;
|
||||||
|
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
public interface BookRepository extends JpaRepository<Book, Long>{
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
package com.baeldung.spring.cloud.connectors.heroku.book;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Propagation;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@Transactional(readOnly = true)
|
||||||
|
public class BookService {
|
||||||
|
private final BookRepository bookRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
public BookService(BookRepository bookRepository) {
|
||||||
|
this.bookRepository = bookRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Book findBookById(Long bookId) {
|
||||||
|
return bookRepository.findOne(bookId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional(propagation = Propagation.REQUIRED)
|
||||||
|
public Book createBook(Book book) {
|
||||||
|
Book newBook = new Book();
|
||||||
|
newBook.setTitle(book.getTitle());
|
||||||
|
newBook.setAuthor(book.getAuthor());
|
||||||
|
return bookRepository.save(newBook);
|
||||||
|
}
|
||||||
|
}
|
@ -3,7 +3,12 @@ package com.baeldung;
|
|||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
|
||||||
|
import java.util.ConcurrentModificationException;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.function.Executable;
|
||||||
|
|
||||||
public class ExceptionUnitTest {
|
public class ExceptionUnitTest {
|
||||||
|
|
||||||
@ -22,4 +27,14 @@ public class ExceptionUnitTest {
|
|||||||
Integer.valueOf(str);
|
Integer.valueOf(str);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenModifyMapDuringIteration_thenThrowExecption() {
|
||||||
|
Map<Integer, String> hashmap = new HashMap<>();
|
||||||
|
hashmap.put(1, "One");
|
||||||
|
hashmap.put(2, "Two");
|
||||||
|
|
||||||
|
Executable executable = () -> hashmap.forEach((key, value) -> hashmap.remove(1));
|
||||||
|
assertThrows(ConcurrentModificationException.class, executable);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user