diff --git a/org.eclipse.jdt.debug.jdi.tests/tests/org/eclipse/debug/jdi/tests/AbstractJDITest.java b/org.eclipse.jdt.debug.jdi.tests/tests/org/eclipse/debug/jdi/tests/AbstractJDITest.java
index b4efcf8..545e821 100644
--- a/org.eclipse.jdt.debug.jdi.tests/tests/org/eclipse/debug/jdi/tests/AbstractJDITest.java
+++ b/org.eclipse.jdt.debug.jdi.tests/tests/org/eclipse/debug/jdi/tests/AbstractJDITest.java
@@ -1344,7 +1344,7 @@
 
 			// Ensure that the test didn't leave a modification watchpoint that could change the expected state of the program
 			if (fVM != null) {
-				assertTrue(fVM.eventRequestManager().modificationWatchpointRequests().size() == 0);
+				assertTrue(fVM.eventRequestManager().modificationWatchpointRequests().isEmpty());
 				if (fInControl) {
 					shutDownTarget();
 				}
diff --git a/org.eclipse.jdt.debug.jdi.tests/tests/org/eclipse/debug/jdi/tests/ReferenceTypeTest.java b/org.eclipse.jdt.debug.jdi.tests/tests/org/eclipse/debug/jdi/tests/ReferenceTypeTest.java
index 41686d1..18e3fdd 100644
--- a/org.eclipse.jdt.debug.jdi.tests/tests/org/eclipse/debug/jdi/tests/ReferenceTypeTest.java
+++ b/org.eclipse.jdt.debug.jdi.tests/tests/org/eclipse/debug/jdi/tests/ReferenceTypeTest.java
@@ -283,7 +283,7 @@
 		for (int i = 0; i < fTypes.size(); ++i) {
 			ReferenceType type = fTypes.get(i);
 			List<?> methods = type.methods();
-			assertTrue("" + i, (methods.size() != 0) == fHasMethods[i]);
+			assertTrue("" + i, (!methods.isEmpty()) == fHasMethods[i]);
 		}
 	}
 	/**
diff --git a/org.eclipse.jdt.debug.jdi.tests/tests/org/eclipse/debug/jdi/tests/ThreadReferenceTest.java b/org.eclipse.jdt.debug.jdi.tests/tests/org/eclipse/debug/jdi/tests/ThreadReferenceTest.java
index 7676ebe..ab216e9 100644
--- a/org.eclipse.jdt.debug.jdi.tests/tests/org/eclipse/debug/jdi/tests/ThreadReferenceTest.java
+++ b/org.eclipse.jdt.debug.jdi.tests/tests/org/eclipse/debug/jdi/tests/ThreadReferenceTest.java
@@ -180,7 +180,7 @@
 
 		// Create a java.lang.Throwable instance in
 		List<ReferenceType> classes = fVM.classesByName("java.lang.Throwable");
-		assertTrue("1", classes.size() != 0);
+		assertTrue("1", !classes.isEmpty());
 		ClassType threadDeathClass = (ClassType) classes.get(0);
 		Method constructor =
 			threadDeathClass.concreteMethodByName("<init>", "()V");
diff --git a/org.eclipse.jdt.debug.jdi.tests/tests/org/eclipse/debug/jdi/tests/VirtualMachineTest.java b/org.eclipse.jdt.debug.jdi.tests/tests/org/eclipse/debug/jdi/tests/VirtualMachineTest.java
index cf6b26e..55eb48e 100644
--- a/org.eclipse.jdt.debug.jdi.tests/tests/org/eclipse/debug/jdi/tests/VirtualMachineTest.java
+++ b/org.eclipse.jdt.debug.jdi.tests/tests/org/eclipse/debug/jdi/tests/VirtualMachineTest.java
@@ -307,7 +307,7 @@
 
 		// The test program has started, the number of classes is != 0
 		List<?> classes = fVM.allClasses();
-		assertTrue("1", classes.size() != 0);
+		assertTrue("1", !classes.isEmpty());
 
 		// Collect names of received classes
 		String[] names = new String[classes.size()];
@@ -344,7 +344,7 @@
 
 		// The test program has started, the number of threads is != 0
 		List<?> threads = fVM.allThreads();
-		assertTrue("1", threads.size() != 0);
+		assertTrue("1", !threads.isEmpty());
 
 		// Collect names of received threads
 		String[] names = new String[threads.size()];
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/OpenFromClipboardAction.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/OpenFromClipboardAction.java
index fd7189f..aa3d273 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/OpenFromClipboardAction.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/OpenFromClipboardAction.java
@@ -496,7 +496,7 @@
 			}
 		} else if (matches.size() == 1) {
 			openJavaElements(matches.toArray(), line);
-		} else if (matches.size() == 0) {
+		} else if (matches.isEmpty()) {
 			openInputEditDialog(inputText);
 		}
 	}
diff --git a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/BinaryBasedSourceGenerator.java b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/BinaryBasedSourceGenerator.java
index a91e07d..54fea75 100644
--- a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/BinaryBasedSourceGenerator.java
+++ b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/BinaryBasedSourceGenerator.java
@@ -203,7 +203,7 @@
 				source.append(getUniqueMethodName(EVAL_METHOD_NAME,
 						referenceType));
 				source.append("() {\nnew "); //$NON-NLS-1$
-				if (interfaceList.size() != 0) {
+				if (!interfaceList.isEmpty()) {
 					source.append(getDotName(interfaceList
 							.get(0).name()));
 				} else {
@@ -212,7 +212,7 @@
 				source.append("()"); //$NON-NLS-1$
 			} else {
 				source.append("public class ").append(ANONYMOUS_CLASS_NAME).append(" "); //$NON-NLS-1$ //$NON-NLS-2$
-				if (interfaceList.size() != 0) {
+				if (!interfaceList.isEmpty()) {
 					source.append(" implements ").append(getDotName(interfaceList.get(0).name())); //$NON-NLS-1$
 				} else {
 					source.append(" extends ").append(getDotName(superClassName)); //$NON-NLS-1$
@@ -294,7 +294,7 @@
 					} catch (ClassNotPreparedException e) {
 						return new StringBuilder();
 					}
-					if (interfaces.size() != 0) {
+					if (!interfaces.isEmpty()) {
 						source.append("implements "); //$NON-NLS-1$
 						Iterator<InterfaceType> iterator = interfaces.iterator();
 						InterfaceType interface_ = iterator
@@ -486,7 +486,7 @@
 
 			List<String> arguments = method.argumentTypeNames();
 			int i = 0;
-			if (arguments.size() != 0) {
+			if (!arguments.isEmpty()) {
 				Iterator<String> iterator = arguments.iterator();
 				source.append(getDotName(iterator.next()))
 						.append(" arg").append(i++); //$NON-NLS-1$
diff --git a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/ArrayReferenceImpl.java b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/ArrayReferenceImpl.java
index 2a2650b..868d8df 100644
--- a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/ArrayReferenceImpl.java
+++ b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/ArrayReferenceImpl.java
@@ -309,7 +309,7 @@
 	@Override
 	public void setValues(int index, List<? extends Value> values, int srcIndex, int length)
 			throws InvalidTypeException, ClassNotLoadedException {
-		if (values == null || values.size() == 0) {
+		if (values == null || values.isEmpty()) {
 			// trying to set nothing should do no work
 			return;
 		}
diff --git a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/connect/PacketSendManager.java b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/connect/PacketSendManager.java
index a8de8e1..9cc4f91 100644
--- a/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/connect/PacketSendManager.java
+++ b/org.eclipse.jdt.debug/jdi/org/eclipse/jdi/internal/connect/PacketSendManager.java
@@ -108,7 +108,7 @@
 			IOException {
 		LinkedList<JdwpPacket> packetsToSend = new LinkedList<>();
 		synchronized (fOutgoingPackets) {
-			while (fOutgoingPackets.size() == 0) {
+			while (fOutgoingPackets.isEmpty()) {
 				fOutgoingPackets.wait();
 			}
 			packetsToSend.addAll(fOutgoingPackets);
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIDebugTarget.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIDebugTarget.java
index df58a2e..27eec43 100644
--- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIDebugTarget.java
+++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIDebugTarget.java
@@ -2041,7 +2041,7 @@
 						new VMDisconnectedException());
 			}
 			List<ReferenceType> classes = vm.classesByName(name);
-			if (classes.size() == 0) {
+			if (classes.isEmpty()) {
 				switch (name.charAt(0)) {
 				case 'b':
 					if (name.equals("boolean")) { //$NON-NLS-1$
diff --git a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/JavaAppletLaunchConfigurationDelegate.java b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/JavaAppletLaunchConfigurationDelegate.java
index 030a045..c9137b8 100644
--- a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/JavaAppletLaunchConfigurationDelegate.java
+++ b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/JavaAppletLaunchConfigurationDelegate.java
@@ -128,7 +128,7 @@
 			buf.append(Integer.toString(configuration.getAttribute(IJavaLaunchConfigurationConstants.ATTR_APPLET_HEIGHT, 200)));
 			buf.append("\" >\n"); //$NON-NLS-1$
 			Map<String, String> parameters = configuration.getAttribute(IJavaLaunchConfigurationConstants.ATTR_APPLET_PARAMETERS, new HashMap<String, String>());
-			if (parameters.size() != 0) {
+			if (!parameters.isEmpty()) {
 				Iterator<Entry<String, String>> iterator = parameters.entrySet().iterator();
 				while (iterator.hasNext()) {
 					Entry<String, String> next = iterator.next();
