
Concept explainers
(Implement set operations in MyList) The implementations of the methods addAll, removeAll, retainAll, toArray(), and toArray(T[]) are omitted in the MyList interface. Implement these methods. Test your new MyList class using the code at liveexample.pearsoncmg.com/test/ Exercise24_01Test.txt.

MyList
Program plan:
- Import required packages.
- Declare the main class named “Main”.
- Give the main method “public static void main ()”.
- Declare a default constructor and data members.
- Prompt the user to get the input.
- Print the value of list1 and list2.
- Print the result by calling the function “addAll()”.
- Print the value of list1 and list2.
- Print the result by calling the method “removeAll()”.
- Print the value of list1 and list2.
- Print the result by calling the method “retainAll()”.
- Print the value of list1 and list2.
- Print the result by calling the method “containsAll()”.
- Includes an interface “MyList”
- Define a method to add a new element at the specified index in the list.
- Define a method to return the element from this list at the specified index
- Define a method to return the index of the first matching element in this list.
- Define a method to return the index of the last matching element in this list
- Define a method to remove the element at the specified position in this list
- Define a method to replace the element at the specified position in this list
- Define a method to add a new element at the end of this list
- Define a method to return true if this list contains no elements
- Define a method to remove the first occurrence of the element e from this list
- Define a method to check whether the elements are present or not
- Define a method to add the elements in otherList to this list.
- Define a method to retains the elements in this list that are also in otherList
- Define a class “MyArrayList”.
- Declare a variable “sum” and assign 0 to it.
- Declare data members and default constructor.
- Create a list from an array of object.
- Define a method to add a new element at the specified index
- Define a method to create a larger array which is double the current size.
- Define a method to clear the list.
- Define a method to return true if the list contains the element.
- Define a method to return the element at the specified index.
- Define a method to trim the capacity to current size.
- Define a method to return the number of element in the list.
- Give the main method “public static void main ()”.
The below program includes the methods addAll(), removeAll(), retainAll(), toArray(), and toArray(T[]) which were omitted in the MyList interface.
Explanation of Solution
Program:
//import required packages
import java.util.*;
//class definition
public class Exercise24_01 {
//define main method
public static void main(String[] args) {
new Exercise24_01();
}
//default constructor
public Exercise24_01() {
Scanner input = new Scanner(System.in);
//data members
String[] name1 = new String[5];
String[] name2 = new String[5];
String[] name3 = new String[2];
//prompt user to get the input
System.out.print("Enter five strings for array name1 separated by space: ");
for (int i = 0; i < 5; i++) {
name1[i] = input.next();
}
//prompt the user to get the input
System.out.print("Enter five strings for array name2 separated by space: ");
for (int i = 0; i < 5; i++) {
name2[i] = input.next();
}
//prompt user to get the input
System.out.print("Enter two strings for array name3 separated by space: ");
for (int i = 0; i < 2; i++) {
name3[i] = input.next();
}
MyList<String> list1 = new MyArrayList<>(name1);
MyList<String> list2 = new MyArrayList<>(name2);
//print the value of list1
System.out.println("list1:" + list1);
//print the value of list2
System.out.println("list2:" + list2);
//calling addAll function
list1.addAll(list2);
//print the result
System.out.println("After addAll:" + list1 + "\n");
list1 = new MyArrayList<>(name1);
list2 = new MyArrayList<>(name2);
//print the value of list1
System.out.println("list1:" + list1);
//print the value of list2
System.out.println("list2:" + list2);
//calling removeAll function
list1.removeAll(list2);
//print the result
System.out.println("After removeAll:" + list1 + "\n");
list1 = new MyArrayList<>(name1);
list2 = new MyArrayList<>(name2);
//print the value of list1
System.out.println("list1:" + list1);
//print the value of list2
System.out.println("list2:" + list2);
//calling the retainAll function
list1.retainAll(list2);
//print the result
System.out.println("After retainAll:" + list1 + "\n");
list1 = new MyArrayList<>(name1);
list2 = new MyArrayList<>(name2);
//print the value of list1
System.out.println("list1:" + list1);
//print the value of list2
System.out.println("list2:" + list2);
//calling the retainAll function
list1.retainAll(list2);
//print the result
System.out.println("list1 contains all list2? " + list1.containsAll(list2) + "\n");
list1 = new MyArrayList<>(name1);
list2 = new MyArrayList<>(name3);
//print the value of list1
System.out.println("list1:" + list1);
//print the value of list2
System.out.println("list2:" + list2);
//print the result
System.out.println("list1 contains all list2? " + list1.containsAll(list2) + "\n");
Object[] name4 = list1.toArray();
//print the result
System.out.print("name4: ");
for (Object e: name4) {
System.out.print(e + " ");
}
String[] name5 = new String[list1.size()];
String[] name6 = list1.toArray(name5);
//print the result
System.out.print("\nname6: ");
for (Object e: name6) {
System.out.print(e + " ");
}
}
//includes the interface
public interface MyList<E> extends java.util.Collection<E> {
/* Add a new element at the specified index in this list */
public void add(int index, E e);
/*Return the element from this list at the specified index */
public E get(int index);
/*Return the index of the first matching element in this list. Return -1 if no match. */
public int indexOf(Object e);
/*Return the index of the last matching element in this list, Return -1 if no match. */
public int lastIndexOf(E e);
/* Remove the element at the specified position in this list, Shift any subsequent elements to the left. Return the element that was removed from the list. */
public E remove(int index);
/* Replace the element at the specified position in this list, with the specified element and returns the new set. */
public E set(int index, E e);
@Override /* Add a new element at the end of this list */
public default boolean add(E e) {
add(size(), e);
return true;
}
@Override /* Return true if this list contains no elements */
public default boolean isEmpty() {
return size() == 0;
}
@Override /* Remove the first occurrence of the element e from this list. Shift any subsequent elements to the left, Return true if the element is removed. */
public default boolean remove(Object e) {
if (indexOf(e) >= 0) {
remove(indexOf(e));
return true;
}
else
return false;
}
@Override
/*method to check whether the elements are present or not */
public default boolean containsAll(Collection<?> c) {
for (Object e: c)
if (!this.contains(e))
return false;
return true;
}
/* Adds the elements in otherList to this list.
Returns true if this list changed as a result of the call */
@Override
public default boolean addAll(Collection<? extends E> c) {
for (E e: c)
this.add(e);
return c.size() > 0;
}
/* Removes all the elements in otherList from this list Returns true if this list changed as a result of the call */
@Override
public default boolean removeAll(Collection<?> c) {
boolean changed = false;
for (Object e: c) {
if (remove(e))
changed = true;
}
return changed;
}
/* Retains the elements in this list that are also in otherList, Returns true if this list changed as a result of the call */
@Override
public default boolean retainAll(Collection<?> c) {
boolean changed = false;
for (int i = 0; i < this.size(); ) {
if (!c.contains(this.get(i))) {
this.remove(get(i));
changed = true;
}
else
i++;
}
return changed;
}
@Override
public default Object[] toArray() {
// Left as an exercise
Object[] result = new Object[size()];
for (int i = 0; i < size(); i++) {
result[i] = this.get(i);
}
//return statement
return result;
}
@Override
public default <T> T[] toArray(T[] a) {
// Left as an exercise
for (int i = 0; i < size(); i++) {
a[i] = (T)this.get(i);
}
//return statement
return a;
}
}
//class definition
public class MyArrayList<E> implements MyList<E> {
//data members
public static final int INITIAL_CAPACITY = 16;
private E[] data = (E[])new Object[INITIAL_CAPACITY];
private int size = 0;
// Create an empty list
public MyArrayList() {
}
//Create a list from an array of objects
public MyArrayList(E[] objects) {
for (int i = 0; i < objects.length; i++)
add(objects[i]);
}
@Override /* Add a new element at the specified index */
public void add(int index, E e) {
ensureCapacity();
/* Move the elements to the right after the specified index */
for (int i = size - 1; i >= index; i--)
data[i + 1] = data[i];
// Insert new element to data[index]
data[index] = e;
// Increase size by 1
size++;
}
/*Create a new larger array, double the current size + 1 */
private void ensureCapacity() {
if (size >= data.length) {
E[] newData = (E[])(new Object[size * 2 + 1]);
System.arraycopy(data, 0, newData, 0, size);
data = newData;
}
}
@Override // Clear the list
public void clear() {
data = (E[])new Object[INITIAL_CAPACITY];
size = 0;
}
@Override /*Return true if this list contains the element */
public boolean contains(Object e) {
for (int i = 0; i < size; i++)
if (e.equals(data[i])) return true;
return false;
}
@Override /*Return the element at the specified index */
public E get(int index) {
checkIndex(index);
return data[index];
}
private void checkIndex(int index) {
if (index < 0 || index >= size)
throw new IndexOutOfBoundsException
("Index: " + index + ", Size: " + size);
}
@Override /*Return the index of the first matching element in this list. Return -1 if no match. */
public int indexOf(Object e) {
for (int i = 0; i < size; i++)
if (e.equals(data[i])) return i;
return -1;
}
@Override /*Return the index of the last matching element in this list. Return -1 if no match. */
public int lastIndexOf(E e) {
for (int i = size - 1; i >= 0; i--)
if (e.equals(data[i])) return i;
return -1;
}
@Override /* Remove the element at the specified position in this list. Shift any subsequent elements to the left. Return the element that was removed from the list. */
public E remove(int index) {
checkIndex(index);
E e = data[index];
// Shift data to the left
for (int j = index; j < size - 1; j++)
data[j] = data[j + 1];
data[size - 1] = null;
// Decrement size
size--;
return e;
}
@Override /*Replace the element at the specified position in this list with the specified element. */
public E set(int index, E e) {
checkIndex(index);
E old = data[index];
data[index] = e;
return old;
}
@Override
public String toString() {
StringBuilder result = new StringBuilder("[");
for (int i = 0; i < size; i++) {
result.append(data[i]);
if (i < size - 1) result.append(", ");
}
return result.toString() + "]";
}
// Trims the capacity to current size
public void trimToSize() {
if (size != data.length) {
E[] newData = (E[])(new Object[size]);
System.arraycopy(data, 0, newData, 0, size);
data = newData;
} // If size == capacity, no need to trim
}
@Override /*Override iterator() defined in Iterable */
public java.util.Iterator<E> iterator() {
return new ArrayListIterator();
}
private class ArrayListIterator
implements java.util.Iterator<E> {
// Current index
private int current = 0;
@Override
public boolean hasNext() {
return (current < size);
}
@Override
public E next() {
return data[current++];
}
@Override
public void remove() {
MyArrayList.this.remove(current);
}
}
@Override /* Return the number of elements in this list */
public int size() {
return size;
}
}
}
Enter five strings for array name1 separated by space: tom george peter jean jane
Enter five strings for array name2 separated by space: tom george michael michelle daniel
Enter two strings for array name3 separated by space: tom peter
list1:[tom, george, peter, jean, jane]
list2:[tom, george, michael, michelle, daniel]
After addAll:[tom, george, peter, jean, jane, tom, george, michael, michelle, daniel]
list1:[tom, george, peter, jean, jane]
list2:[tom, george, michael, michelle, daniel]
After removeAll:[peter, jean, jane]
list1:[tom, george, peter, jean, jane]
list2:[tom, george, michael, michelle, daniel]
After retainAll:[tom, george]
list1:[tom, george, peter, jean, jane]
list2:[tom, george, michael, michelle, daniel]
list1 contains all list2? false
list1:[tom, george, peter, jean, jane]
list2:[tom, peter]
list1 contains all list2? true
name4: tom george peter jean jane
name6: tom george peter jean jane
Want to see more full solutions like this?
Chapter 24 Solutions
Introduction to Java Programming and Data Structures Comprehensive Version (11th Edition)
Additional Engineering Textbook Solutions
Introduction To Programming Using Visual Basic (11th Edition)
Mechanics of Materials (10th Edition)
Database Concepts (8th Edition)
Computer Science: An Overview (13th Edition) (What's New in Computer Science)
Thinking Like an Engineer: An Active Learning Approach (4th Edition)
Java How to Program, Early Objects (11th Edition) (Deitel: How to Program)
- Need help with python! It wont output right. and any alterations break the code.So I have the code done below but I dont know how to have it output a certain way.Expected output:Enter your name: PhilIn text name is: P h i lIn ASCII decimal: 80 104 105 108 In ASCII binary: 01010000 01101000 01101001 01101100Enter your age: 71As a string "71": 7 1In ASCII decimal: 55 49In ASCII binary: 0110111 0110001As an int variable: 71In numeric binary: 1000111Code (need help here): print(f"\nName: {name}")# Loop through each letter:for letter in name: ascii_val = ord(letter) # decimal ASCII binary_val = format(ascii_val, '08b') # 8-bit binaryprint("Character")print(f"{letter:9}")print("ASCII Decimal")print(f"{ascii_val:13}")print("ASCII Binary")print(f"{binary_val}") # ageage_str = input("\nEnter your age: ")age_int = int(age_str)print(f"\nAge as string: {age_str}")print(f"Age as int: {age_int}")print(f"Age in ASCII (per digit):")for digit in age_str: ascii_val = ord(digit)…arrow_forwardNeed help with python code!Issue with having to enter name, then give me the text, ASCII decimal/binary of my name. And below same thing but with age (as string, decimal, binary, int variable, and number binary)Code: #Bob in ASCII binary is 6611198name = "Bob" # Assign a variable letter = "A"#print(f"{name} in ASCII binary is ",end="")for letter in name: print(f"{letter>7} ",end="") print()for letter in name: asciiLetter = ord(letter) #Use the ord function to get the decicmal ASCII of letter. print(f'{asciiLetter:b} ', end="")arrow_forwardHW #2. Data Representation - Part 2 - Complement, Addition, and Subtraction 1. Using five bits to represent each number, write the representations of 9 and -9 in 1's complement, signed magnitude, and 2's complement integers. 2. Write the six-bit 2's complement representation of -27. 3. Convert the following decimal numbers to 12 bit 2's complement: a. -145 b. 1025 c. -1536 d. 1729 e. -999 4. Convert the following 2's complement binary numbers to decimal. a. 1010 b. 0101 c. 10010110 d. 0111010010110011 5. Convert the following decimal numbers to binary 4-bit 2's complement representations or explain why the conversion is not possible. a. 5 b. -7 c. 8 d. -12 e. -1 f. 7f. 14 6. Answer the following questions: a. What is the largest positive number one can represent in a 12-bit 2's complement code? Write your result in binary and decimal. b. What is the greatest magnitude negative number one can represent in a 12-bit 2's complement code? Write your result in binary and decimal. c. What is…arrow_forward
- 3. Examine the pseudocode below, then find and correct all the bugs. // A high school is holding a recycling competition, and this program // allows a user to enter a student's year in school (1 through 4) and // number of cans collected for recycling. Data is entered continuously // until the user enters a 9 for the year. After headings, output is four // lines -- one for each school year class. Find and fix all bugs. start Declarations num year num cans num SIZE = 0 num QUIT = “999” num collectedArray[SIZE] = 0, 0, 0 string HEAD1 = "Can Recycling Report" string HEAD2 = "Year Cans Collected” output "Enter year of student or ", QUIT, " to quit " output year while year not QUIT output "Enter number of cans collected " input cans collectedArray[year] = collectedArray[year] + cans output "Enter year of student or ", QUIT, " to quit " output year endwhile output HEAD1 and HEAD2 year = 1 while year <…arrow_forwardWatch Dr. Raj Ramesh's "What Is Artificial Intelligence" video, study Ralph M. Stair's "Fundamentals of Information Systems" 9th edition textbook, and conduct research on Al technology. Discussion question: What do you know about Al? Explain the potential value and the potential limitations of artificial intelligence.arrow_forwardProvide the full C++ code that fulfills the directions. Below I have provided all 6 test files contents programming_assignment_1-test_file_1.c: // ***************************************************// * CS460: Programming Assignment 1: Test Program 1 *// ***************************************************procedure main (void){int counter;counter = 2;/*counter = 100;*/printf ("counter = %d\n", counter);} programming_assignment_1-test_file_2.c: // ***************************************************// * CS460: Programming Assignment 1: Test Program 2 *// ***************************************************procedure main (void){int /* hidden; int */ counter;counter = /*2*/ 100;/* hidden = */ /*5;*/printf ("counter = %d\n", counter);} programming_assignment_1-test_file_3.c: // ***************************************************// * CS460: Programming Assignment 1: Test Program 3 *// ***************************************************//procedure main (/*avoid*/void)procedure main…arrow_forward
- The Example 2 address is stored able named nail, which consists of a first name wed by 18, wed name Assume that at least three characters Write a statement that uses the method and to the length of the first name Wote another statement that between and the length of the last name The same wed by followed by the last name flowed by the last cost of the first of the first name followed by andomly ected character from the frst name, followed by cted from a random postc Ternington generate a random number between the athad ad to generate aarrow_forward史》 Mark for Review Which of the following could be printed as a result of executing this code segment? 8:15 O 912 10 7 15 11arrow_forward3 Mark for Review Which of the following best describes the value assigned to b when the code segment is executed? A random integer between 0 and a1, inclusive A random integer between a and 2 a, inclusive A random integer between a and 2 a 1, inclusivearrow_forward
- Mark for Review Every year a student is chosen at random to win a prize. The first part of this selection involves choosing which class will be selected. You are asked to write the code to select a student, from grades 9-12, inclusive, and you are to assume there is an equal probability for each to occur. The following incomplete statement appears in a program that computes the value of the random number chosen. int year = /* missing code */; Which of the following replacements for /* missing code */ would best simulate the selection of a grade from 9-12? (int)(Math.random() * 13) Ⓑ (int)(Math.random()*9)+4 (int)(Math.random() * 4) +9 (int)(Math.random()*419 A B Undoarrow_forward4 Mark for Review Assume that the following variable declarations have been made. double d = Math.random(); double r; Which of the following assigns a value to r from the uniform distribution over the range 0.5 ≤r < 5.5 ? B r = d + 0.5; (C) r = d + 0.5 * 5.0; D r = d 5.0%; r = d 5.0+ 0.5; Barrow_forwardWhich of the following statements assigns a random integer between 25 and 60, inclusive, to rn? int rn= (int) (Math.random() * 25) + 36%;B B int rn = (int) (Math.random() * 25) + 60; int rn= (int) (Math.random() * 36) + 25; int rn= (int) (Math.random() * 60) + 25;arrow_forward
- EBK JAVA PROGRAMMINGComputer ScienceISBN:9781337671385Author:FARRELLPublisher:CENGAGE LEARNING - CONSIGNMENTC++ Programming: From Problem Analysis to Program...Computer ScienceISBN:9781337102087Author:D. S. MalikPublisher:Cengage LearningNp Ms Office 365/Excel 2016 I NtermedComputer ScienceISBN:9781337508841Author:CareyPublisher:Cengage
- Programming Logic & Design ComprehensiveComputer ScienceISBN:9781337669405Author:FARRELLPublisher:CengageNew Perspectives on HTML5, CSS3, and JavaScriptComputer ScienceISBN:9781305503922Author:Patrick M. CareyPublisher:Cengage LearningSystems ArchitectureComputer ScienceISBN:9781305080195Author:Stephen D. BurdPublisher:Cengage Learning



