• Bag类的接口的实现与测试(课上测试补做)


    Bag类的接口的实现与测试(课上测试补做)

    截图

    • 由于截图有一定的的限制就没有吧所有的代码截进去,后面有代码。

    代码

    package ClassTest;
    
    import java.util.Objects;
    
    /**
     * Created by 春旺 on 2017/9/22.
     */
    /*
    实现接口BagInterface,
    声明一个有限长度的T类型的数组用来储存各个类
    
    */
    public class Bag<T> implements BagInterface<T>{
        public Object [] arry = new Object[100];
    
        /*
        声明一个整形数记录非空的元素
        用循环遍历数组不为空时size 加一
        为空继续循环
        */
        @Override
        public int getCurrentSize() {
            int size = 0;
            for (int i = 0; i < arry.length; i++){
                if (arry[i] != null){
                   size = size + 1;
                }
            }
            return size;
        }
    /*
    遍历数组一发现有非空元素就就变为false 并结束循环
    */
        @Override
        public boolean isEmpty() {
            boolean b = true;
            for (int i = 0;i < arry.length;i++){
                if (arry[i] != null){
                  b = false;
                  break;
                }
            }
    
            return b;
        }
    /*
    遍历数组,在第一个非空的的数组元素并将其变成输入的元素
    */
        @Override
        public boolean add(T newEntry) {
            boolean b = false;
           for (int i = 0;i < arry.length;i++){
               if (arry[i] == null){
                   arry[i] = (Object) newEntry;
                   b = true;
                   break;
               }
           }
    
          return b;
        }
    /*
    随意删除,所以将第一个非空的元素变成null
    */
        @Override
        public T remove() {
            T t = null;
            for (int i = 0;i < arry.length;i++){
                if (arry[i] != null){
                    t = (T)arry[i];
                  arry[i] = null;
                    break;
                }
            }
    
           return t ;
        }
    /*
    先查找目标元素,未找到返回false。
    
    for循环遍历数组将所有的目标元素变成
    */
        @Override
        public boolean remove(T anEntry) {
            boolean b = false;
            for (int i =0; i < arry.length;i++){
                if (anEntry == arry[i]){
                    arry [i] = null;
                    b = true;
                }
            }
            return b;
        }
    /*
    删除所有的元素就将原先声明的数组清空
    */
        @Override
        public void clear() {
            for (int i = 0;i< 100;i++) {
                arry[i] = null;
            }
        }
    /*遍历数组将目标元素与数组中的元素一一比较
    如果相等就进行计数,返回计数后的总的值
    */
        @Override
        public int getFrequencyOf(T anEntry) {
            int number = 0;
            for (int i =0; i < arry.length;i++){
                if (anEntry == arry[i]){
                   number ++;
                }
    
    
        }
        return number;
        }
    /* 遍历数组将目标元素与数组中的元素一一比较
    只要发现有数组中的元素与目标元素相等就退出循环*/
        @Override
        public boolean contains(T anEntry) {
            boolean b = false;
            for (int i =0; i < arry.length;i++){
    
    
                if (anEntry == arry[i]){
                    arry [i] = null;
                    b = true;
                    break;
                }
            }
            return b;
        }
    }
    
    • 伪代码已经包含在每个方法的开头。
    package ClassTest;
    
    import org.junit.Test;
    
    import static org.junit.Assert.*;
    
    /**
     * Created by 春旺 on 2017/9/22.
     */
    public class BagTest {
        Bag<Student> bag = new Bag<>();
        Student s1 = new Student();
        @Test
        public void getCurrentSize() throws Exception {
    
            Student s1 = new Student();
    
            assertEquals(0,bag.getCurrentSize());
            bag.add(s1);
            assertEquals(1, bag.getCurrentSize());
    
        }
    
        @Test
        public void isEmpty() throws Exception {
           assertEquals(true,bag.isEmpty());
            Student s1 = new Student();
            bag.add(s1);
            assertEquals(false,bag.isEmpty());
    
        }
    
        @Test
        public void add() throws Exception {
            assertEquals(true,bag.add(null));
            bag.add(s1);
            assertEquals(true,bag.add(s1));
        }
    
        @Test
        public void remove() throws Exception {
            bag.add(s1);
            bag.remove();
            assertEquals(0,bag.getCurrentSize());
    
        }
    
        @Test
        public void remove1() throws Exception {
            Student s2 = new Student();
            Student s3 = new Student();
            Student s4 = new Student();
            bag.add(s1);   bag.add(s2);
            bag.add(s3);   bag.add(s4);
            bag.add(s1);   bag.add(s2);
            bag.add(s3);   bag.add(s4);
            assertEquals(8,bag.getCurrentSize());
            bag.remove(s2);
            assertEquals(6,bag.getCurrentSize());
        }
    
        @Test
        public void clear() throws Exception {
            for (int i = 0;i<100;i++){
                bag.add(s1);
            }
            assertEquals(100,bag.getCurrentSize());
           bag.clear();
           assertEquals(0,bag.getCurrentSize());
    
        }
    
        @Test
        public void getFrequencyOf() throws Exception {
            Student s2 = new Student();
            Student s3 = new Student();
            for (int i = 0;i < 50;i++){
               bag.add(s2);
               bag.add(s1);
            }
            assertEquals(50,bag.getFrequencyOf(s1));
            assertEquals(0,bag.getFrequencyOf(s3));
        }
    
        @Test
        public void contains() throws Exception {
            Student s2 = new Student();
            Student s3 = new Student();
            for (int i = 0;i < 50;i++){
                bag.add(s2);
                bag.add(s1);
            }
            assertEquals(true,bag.contains(s2));
            assertEquals(false,bag.contains(s3));
        }
    
    }
    
    package ClassTest;
    
    /**
         2 An interface that describes the operations of a bag of objects.
         3
         4 */
     public interface BagInterface<T>
     {
             /**
              * Gets the current number of entries in this bag.
              *
              * @return The integer number of entries currently in the bag.
              */
             public default int getCurrentSize() {
                     return 0;
             }
    
             /** Sees whether this bag is empty.
              @return True if the bag is empty, or false if not. */
             public boolean isEmpty();
    
             /** Adds a new entry to this bag.
              @param newEntry The object to be added as a new entry.
              @return True if the addition is successful, or false if not. */
             public boolean add(T newEntry);
    
             /** Removes one unspecified entry from this bag, if possible.
              @return Either the removed entry, if the removal
              was successful, or null. */
             public T remove();
    
             /** Removes one occurrence of a given entry from this bag, if possible.
              @param anEntry The entry to be removed.
              @return True if the removal was successful, or false if not. */
             public boolean remove (T anEntry);
    
             /** Removes all entries from this bag. */
             public void clear();
    
             /** Counts the number of times a given entry appears in this bag.
              @return The number of times anEntry appears in the bag.
               * @param anEntry The entry to be counted.*/
             public int getFrequencyOf(T anEntry);
    
             /** Tests whether this bag contains a given entry.
              @param anEntry The entry to locate.
              @return True if the bag contains anEntry, or false if not. */
              public boolean contains(T anEntry);
             /** Retrieves all entries that are in this bag.
              @return A newly allocated array of all the entries in the bag.
              Note: If the bag is empty, the returned array is empty. */
    
             } // end BagInterf
    
    package ClassTest;
    
    /**
     * Created by 春旺 on 2017/9/22.
     */
    
    public class Student {
       String name;
       int id ;
       public void student(){
           id = 20162324;
           name = "春旺";
       }
    
    }
    
    
    • 这个类比较简陋,只是拿来测试就没有写的太详细。

    总结

    对于这次考试来说我在上课时不知道在做什么,对于老师的意图没有了理解,在课后与同学交流的过程中才知道自己的思想太过于的局限,太过于的执着,在遇到困难时没有想办法绕过去,而是一直纠结于这个问题。

  • 相关阅读:
    luogu P1840 Color the Axis_NOI导刊2011提高(05)|并查集
    luogu P5414 [YNOI2019]排序 |动态规划
    luogu P4064 [JXOI2017]加法 |二分+堆
    luogu P4065 [JXOI2017]颜色 |随机化+前缀和
    luogu P2135 方块消除 |dp
    luogu P1650 田忌赛马 |贪心
    IM群聊消息究竟是存1份(即扩散读)还是存多份(即扩散写)?
    IM群聊消息的已读回执功能该怎么实现?
    IPv6技术详解:基本概念、应用现状、技术实践(下篇)
    IPv6技术详解:基本概念、应用现状、技术实践(上篇)
  • 原文地址:https://www.cnblogs.com/CHUNWANG/p/7582181.html
Copyright © 2020-2023  润新知