【问题标题】:Store10 values for the same key inside Java String Collections(map,hash.etc)在 Java String Collections(map,hash.etc) 中为同一个键存储 10 个值
【发布时间】:2014-03-04 01:38:44
【问题描述】:

我正在尝试找到一种方法将与学生或教师有关的所有信息插入某种字符串集合 (JAVA)。例如,maps、hashtables、arraylists 等我的主要有以下方法,这些方法涵盖了所有 name 、city..... getter setter 和 Tostring() a。我阅读了多个与我的问题相关的posts,但不足以满足我的需求。

public void studentStuff(){

        student.nameAge();
        student.addressparamaters();
        System.out.println(student.toSTring());

    }

public void facultyStuff(){

        faculty.nameAge();
        faculty.addressparamaters();
        System.out.println(faculty.toSTring());

运行我的 Main 时,系统会提示我按以下顺序输入;

Please Enter First Name
Mike
Please Enter Last Name
Fontain
Please Enter Age
22
Please Enter The House Number :
15
Please Enter The StreetName :
Mackay Place
Please Enter The City Name :
Long Island
Please Enter The House Zip Code:
null
Please a valid ZIP code format
11209

输出

 First Name: Mike
 Last Name :   Fontain
 Age :   22.0
 HOUSE NUMBER: 15
 Street Name :   Mackay
 City :   Place
 State:   Long
 Zip:   11209

【问题讨论】:

  • 仅供参考,我不确定是否存在满足我要求的技术。请告知任何一种方式。问一下也无妨:)

标签: java string collections map hashtable


【解决方案1】:

您有两种类型的课程:教师和学生。但是您想将它们添加到同一个集合中。所以要么两者都必须实现相同的接口或扩展相同的类。如果两个类之间有共同的功能,那就去扩展一个基类,否则坚持实现一个接口。

一个人的识别号是唯一的。因此,使用带有 key 作为标识号和 value 作为学生和教师通用的接口或基类的 Map。要了解有关地图的基础知识,请参阅http://preciselyconcise.com/java/collections/h_map.php。此链接还可让您了解在何种情况下需要使用哪张地图。

【讨论】:

    【解决方案2】:

    在 Java 中,Class 的固有概念可以为您完成此任务,只要您决定类的 key 成员。

    class Student extends Person
    {
        private int student_id; //if unique, good candidate for a key
        ....
        private int age,weight...;
    }
    

    您可以将学生(或扩展基类的学生和教职员工)的集合存储在任何类型的数据结构中,例如 ArrayList 等。

    List<Person> mylist = new ArrayList<Person>();
    mylist.add(new Student(1234));
    

    您可以向Student 添加方法,例如覆盖toString() 以打印出任何重要信息。

    如果您想要 O(1) 访问时间来根据学生的密钥获取学生,您可以实现类似

    Map<Integer,Person> mymap = new HashMap<Integer,Person>();
    mymap.put(student1.getStudentID(),student1);
    

    【讨论】:

    • 我的代码结构使用了继承和组合类 Person{} >> class student extends person{} 等。这是如何工作的。我是否只将 Student_ID 存储在我的地图或哈希表中。你能详细说明一下吗
    • 对,我确实有一个由所有子类实现的接口 toString(){}。我可能误解了集合...我在想一切(所有值)实际上都存储在 Arraylist 或任何其他类型的集合中 ....
    • @user3267108 每个类都扩展了 Object,因此您始终可以覆盖 toString() 方法以使其打印您想要的任何内容。
    • “投票需要 15 声望”我欠你
    【解决方案3】:
    public class Student {
       Map<String> params = new HashMap<>()
       public Student setParameter(String paramName, String paramValue) {
          params.add(paramName, paramValue);
          return this;
       }
    
       public getParam(String paramName) {
          String value = param.get(paramName);
          if(value == null) value == "undef";
          return value;
       }
    }
    

    你的意思是这样的吗?您可以存储任何参数并在知道其名称的情况下对其进行检索。

    【讨论】:

    • 这可能非常有用。我会在我的代码中的某个地方使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多