【问题标题】:Implement a list using an array of objects [closed]使用对象数组实现列表[关闭]
【发布时间】:2013-10-03 19:29:09
【问题描述】:

我正在尝试编写一个程序,其中我们有一个温度列表(双精度)和每天(字符串),该列表需要使用对象数组来实现。

我不明白如何使用双精度和字符串创建列表,以及如何使用对象数组来实现它。

到目前为止,这就是我的程序:

public class dailyTemperature 
{

    //variables
    double temperature;
    String day;

    //getTemp & setTemp methods
    public double getTemp()
    {
      return temperature;
    }

    public void setTemp(double newTemp)
    {
      temperature = newTemp;
    }

    //getDay & setTEmp methods
    public String getDay()
    {
      return day;
    }

    public void setDay(String newDay)
    {
      day = newDay;
    }



}

但是,如何创建包含双精度和字符串的列表以及如何使用对象数组来实现列表?我不知道该怎么做。

【问题讨论】:

  • 封装你的一对信息。创建封装类型的数组,添加元素。
  • 创建一个有两个温度和天数的类。
  • 嗨 Sophia,我注意到您可能会从阅读帮助部分中受益。如果您告诉我们您的尝试,发布 sn-ps,并尝试提出更集中的问题,我相信有人会提供帮助!看看:stackoverflow.com/help/on-topic
  • 现在你已经有了DailyTemperature 类,这就是你需要创建一个列表或数组的东西。由于您的指示是使用数组来实现这一点,因此您可以使用 DailyTemperature[] myList = new DailyTemperature[100]; 之类的东西创建您需要的东西,您可以在其中指定实际需要的数组的大小。
  • @DavidWallace 我会像通常添加到数组中一样添加星期几和温度吗?我想我对什么是对象数组并使用对象数组实现列表有点困惑

标签: java arrays object


【解决方案1】:
// -- if you use lombok: ---
// @Data
// @AllArgsConstructor
// -------------------------
public class TempOfTheDay {
    private double temp;

    private String day; // I would use and int (see Calendar.MONDAY etc)

    // ctors, getters, setters, ... (if you don't use lombok :p)
}

并将其放入数组中:

final TempOfTheDay[] myArray = new TempOfTheDay[]{ 
    new TempOfTheDay(127.0, "monday") 
};

【讨论】:

  • 您还应该实现有效的 hasCode 方法(请参阅 Java 文档以了解应该如何完成 hashCode),因为如果您将此对象存储到任何使用 hasCode 方法的排序集合中 - 您可能会失去一些优势或者得到一个例外。
  • @ProtosZetZ @Data 为我做这件事 ;)
  • 对不起,我不知道这个注释...以前。所以我应该阅读文档 =)
【解决方案2】:

你有几个可能性:)

坏的:

Object[] result = new Object[1];
result[0] = new Object[]{"1.1", Double.valueOf(15,3)};

System.out.println("Day " + result[0][0] + " was temperature: " + result[0][1]);

更好的:

class DayTemperature
{
  final Strting date;
  final Double temperature;
  DayTemperature(String aDate, Double aTemperature)
  {
     date = sDate;
     temperature = aTemperature;
  }
  String getDate() { return date;}
  Double getTemperature() { return temperature;}
}

final DayTemperature[] result = new DayTemperature[1]; 
result[0] = new DayTemperature("1.1", Double.valueOf(12.5));

System.out.println("Day " + result[0].getDate() + " was temperature: " + result[0].getTemperature());

我会建议你最好的地图:

Map<String, Double> result = new HashLinkedMap<String, Double>(1);
result.put("1.1", Double.valueOf(12,5));

for(Map.Entry<String, Double> e : result.entrySet())
{
  System.out.println("Day " + e.getKey() + " was temperature: " + e.getValue());
}

希望这会有所帮助。

【讨论】:

    【解决方案3】:

    我刚刚在 C# 中做了类似的事情。在这里它被翻译成Java。

    您可以创建一个包含每个条目信息的类,例如:

        public class DayTemperature       
        {
                private String day;
                private int temp;
    
                public DayTemperature(String day, int temp)
                {
                    this.day = day;
                    this.temp = temp;
                }
        }
    

    然后在你的程序中你可以实例化这个类,给它们一些值,然后把对象放到一个列表中:

        DayTemperature  entry1 = new DayTemperature ("Monday", 123);
        DayTemperature  entry2 = new DayTemperature ("Tuesday", 23);
        DayTemperature  entry3 = new DayTemperature ("Wednesday", 50);
    
        List<DayTemperature> list1 = new ArrayList<DayTemperature>();
        list1.add(entry1);
        list1.add(entry2);
        list1.add(entry3);
    

    希望对你有帮助

    【讨论】:

    • 与@RC 答案相同的推荐
    • java.util.List 是一个接口,所以 new List() 不起作用。可以是 LinkedList 或 ArrayList,后者在内部使用对象数组,这将满足问题的需求..
    • 还有String,大写S
    • 谢谢大家,上面的代码其实是用C#写的,Java也是一样的思路
    猜你喜欢
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    • 2022-01-05
    • 2018-10-30
    • 1970-01-01
    相关资源
    最近更新 更多