Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的数据建模_Java_Data Structures - Fatal编程技术网

Java中的数据建模

Java中的数据建模,java,data-structures,Java,Data Structures,我想要实现什么? 我想将下表存储在Java中(内存中),以便进一步处理 列表:字符串a、b、c、…的排序列表 e、 g a=“苹果” b=“柠檬” c=“橙色” 长度:列表的长度[a、b、c、…] 频率:列表[a、b、c..]在数据库中的次数 Java中是否有任何默认数据结构可用于存储此类数据 如果没有, 用Java存储此类数据的有效方法是什么? 谢谢 编辑1:- 数据结构有以下要求:- getter(列表l1)、setter(列表l1)、delete(列表l1) 例如: 从xlsx表插

我想要实现什么?

我想下表存储在Java中(内存中),以便进一步处理

列表:字符串a、b、c、…的排序列表

e、 g

  • a=“苹果”
  • b=“柠檬”
  • c=“橙色”
长度:列表的长度[a、b、c、…]

频率:列表[a、b、c..]在数据库中的次数

Java中是否有任何默认数据结构可用于存储此类数据

如果没有,

用Java存储此类数据的有效方法是什么?

谢谢

编辑1:- 数据结构有以下要求:-

  • getter(列表l1)、setter(列表l1)、delete(列表l1)

  • 例如:

  • 从xlsx表插入数据期间

    • 如果已经存在长度为“n”的列表l1[a,b,c,…],则将其频率增加1
    • 否则,以频率1将其添加到地图的适当位置

    • 应该是这样的:

      它作为种类列表的每个元素,使用它的getLength()方法

      公共类列表元素
      {      
      //这将是每个[a,b,c,d,…]对象
      列出我的清单;
      公共整数getLength()
      {
      返回myList.length();
      }
      }
      
      这是前一类的容器:

      public class MyTable
      {
         List<ListElement> Elements; // wil contain each [a,b,c...] and it's length
      
         public int getFrequency(ListElement e)
         {
            // returns the number of repetitions of that element e;
            // (...)
         }
      }
      
      公共类MyTable
      {
      列表元素;//将包含每个[a、b、c..]及其长度
      公共整数getFrequency(ListElement e)
      {
      //返回元素e的重复次数;
      // (...)
      }
      }
      

      这应该是通用模式。当然,根据您希望处理这些数据的方式,您应该创建更多的方法

      应该是这样的:

      它作为种类列表的每个元素,使用它的getLength()方法

      公共类列表元素
      {      
      //这将是每个[a,b,c,d,…]对象
      列出我的清单;
      公共整数getLength()
      {
      返回myList.length();
      }
      }
      
      这是前一类的容器:

      public class MyTable
      {
         List<ListElement> Elements; // wil contain each [a,b,c...] and it's length
      
         public int getFrequency(ListElement e)
         {
            // returns the number of repetitions of that element e;
            // (...)
         }
      }
      
      公共类MyTable
      {
      列表元素;//将包含每个[a、b、c..]及其长度
      公共整数getFrequency(ListElement e)
      {
      //返回元素e的重复次数;
      // (...)
      }
      }
      

      这应该是通用模式。当然,根据您希望处理这些数据的方式,您应该创建更多的方法

      您可以遵循下面提到的方法。在这里,节点类将包含一条记录,其中包括它的频率。上层类将包含具有相同长度的节点列表,我们将根据地图中的节点列表保存长度,以便更快地检索

      对于频率计数,您必须在Node类中生成hashCode和equals方法,该方法将检查不同节点的相等性

      在这里,若您想要特定长度的数据,可以直接从Map中检索,因为键是length only

          Map<Integer,List<Node>>  allDataNodes = new HashMap<Integer,List<Node>>();
      
      
          class Node{
              private List<String> data = new ArrayList<String>();
              private Integer frequency;
      
          }
      
      Map allDataNodes=new HashMap();
      类节点{
      私有列表数据=新的ArrayList();
      专用整数频率;
      }
      
      您可以遵循下面提到的方法。在这里,节点类将包含一条记录,其中包括它的频率。上层类将包含具有相同长度的节点列表,我们将根据地图中的节点列表保存长度,以便更快地检索

      对于频率计数,您必须在Node类中生成hashCode和equals方法,该方法将检查不同节点的相等性

      在这里,若您想要特定长度的数据,可以直接从Map中检索,因为键是length only

          Map<Integer,List<Node>>  allDataNodes = new HashMap<Integer,List<Node>>();
      
      
          class Node{
              private List<String> data = new ArrayList<String>();
              private Integer frequency;
      
          }
      
      Map allDataNodes=new HashMap();
      类节点{
      私有列表数据=新的ArrayList();
      专用整数频率;
      }
      
      我有以下建议:

      1) “节点”或“元素”保存排序列表和其他所有相关数据,如图中的一行

      public class Node
      {
          public List<String> list;
          public int length;  // may be calculated by ctor...
          public int frequency;
          // perhaps some more data on list
      }
      
      公共类节点
      {
      公开名单;
      public int length;//可以由ctor计算。。。
      公共int频率;
      //也许清单上还有更多的数据
      }
      
      2) 容器包含多个映射(或可能的其他数据结构),这些映射允许按所需条件进行搜索和检索

      // key: frequency, value: all lists with key frequency
      Map<Integer, List<Node>> getByfrequency = new HashMap<>();
      // key: length, value: all lists with key length
      Map<Integer, List<Node>> getByLength = new HashMap<>(); 
      
      //键:频率,值:具有键频率的所有列表
      Map getByfrequency=newHashMap();
      //键:长度,值:具有键长度的所有列表
      Map getByLength=新HashMap();
      
      3) 与其他建议相比,这种方法的优势在于它不需要容器的“层次结构”,并且您可以根据搜索需要构建任意多的映射。另外,所有搜索都是o(1)


      4) 缺点是,添加新节点时,必须将其添加到所有贴图中。这是一个容易出错的过程

      我有以下建议:

      1) “节点”或“元素”保存排序列表和其他所有相关数据,如图中的一行

      public class Node
      {
          public List<String> list;
          public int length;  // may be calculated by ctor...
          public int frequency;
          // perhaps some more data on list
      }
      
      公共类节点
      {
      公开名单;
      public int length;//可以由ctor计算。。。
      公共int频率;
      //也许清单上还有更多的数据
      }
      
      2) 容器包含多个映射(或可能的其他数据结构),这些映射允许按所需条件进行搜索和检索

      // key: frequency, value: all lists with key frequency
      Map<Integer, List<Node>> getByfrequency = new HashMap<>();
      // key: length, value: all lists with key length
      Map<Integer, List<Node>> getByLength = new HashMap<>(); 
      
      //键:频率,值:具有键频率的所有列表
      Map getByfrequency=newHashMap();
      //键:长度,值:具有键长度的所有列表
      Map getByLength=新HashMap();
      
      3) 与其他建议相比,这种方法的优势在于它不需要容器的“层次结构”,并且您可以根据搜索需要构建任意多的映射。另外,所有搜索都是o(1)


      4) 缺点是,添加新节点时,必须将其添加到所有贴图中。这是一个容易出错的过程

      用于进一步处理