在Java8中向排序数组添加值

在Java8中向排序数组添加值,java,arrays,sorted,Java,Arrays,Sorted,您将获得以下列表,其中包含现代历史的(半随机)年份。将列表保存到名为“events.txt”的文本文件中,然后编写一个程序: 读取文件“events.txt” 首先将其与最新事件排序 确定1892年CMU的成立是否被视为世界历史事件 如果还没有,则将事件添加到事件列表中 将新事件列表写入名为“sorted_events.txt”的文件 import java.io.*; 导入java.util.*; 公共类事件分类器{ 公共静态void main(字符串[]args)引发FileNotFound

您将获得以下列表,其中包含现代历史的(半随机)年份。将列表保存到名为“events.txt”的文本文件中,然后编写一个程序:

  • 读取文件“events.txt”
  • 首先将其与最新事件排序
  • 确定1892年CMU的成立是否被视为世界历史事件
  • 如果还没有,则将事件添加到事件列表中
  • 将新事件列表写入名为“sorted_events.txt”的文件
  • import java.io.*;
    导入java.util.*;
    公共类事件分类器{
    公共静态void main(字符串[]args)引发FileNotFoundException{
    File File=新文件(“events.txt”);
    FileReader read=新的FileReader(文件);
    LineNumberReader lines=新的LineNumberReader(读取);
    扫描仪读取=新扫描仪(文件);
    PrintWriter输出=新的PrintWriter(“sorted_events.txt”);
    试一试{
    //打电话索取文件
    //确保它存在
    if(file.exists()){
    {
    //首先写这个来确定行数
    int lineNumber=0;
    //获取行数
    while(lines.readLine()!=null){
    lineNumber++;
    }
    int[]事件=新int[lineNumber];
    int j=0;
    while(readIn.hasNext()){
    事件[j]=readIn.nextInt();
    j++;
    }
    //对数组进行排序
    数组。排序(事件);
    布尔发现;
    for(int i=0;i
    我将严格回答“在Java 8中向排序数组添加值”这一标题。有两个选项:

  • 从数组中创建
    TreeSet
    或任何
    SortedSet
    (或基于二进制搜索树的结构)。默认情况下,此集合已排序,添加到其中的任何新项都将保持其排序

  • 使用类似于二进制搜索的方法查找新元素在数组中的位置


  • 这个程序完全符合你的要求,完美地回答了老师的问题

    然而,它使用了几种先进的Java技术,我强烈怀疑你的老师是否会给你任何荣誉,所以使用它的风险由你自己承担

    使用此代码所能做的最好的事情就是阅读它,理解它的概念,并将它们与您所知道的结合起来应用

    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    import java.util.stream.Collectors;
    
    public class EventSorter {
    
      public static void main(String[] args) {
        try {
          Path inPath = Paths.get("events.txt");
          Path outPath = Paths.get("sorted_events.txt");
          int event = 1892;
          Comparator<Integer> lastFirst = Comparator.<Integer>naturalOrder().reversed();
    
          List<Integer> events = Files.lines(inPath).map(Integer::valueOf).sorted(lastFirst).collect(Collectors.toCollection(ArrayList::new));
          int pos = Collections.binarySearch(events, event, lastFirst);
          if (pos < 0) {
            events.add(~pos, event);
          }
          Files.write(outPath, events.stream().map(Object::toString).collect(Collectors.toList()));
        } catch (IOException ex) {
          System.out.println(ex.getMessage());
        }
      }
    }
    
    已排序的_events.txt(输出)


    你是从考试或其他地方抄来的吗?不,这是一个家庭作业我不知道该怎么做我不知道如何将元素1892添加到新的排序txt文件现在我看了它,它看起来像是我做的,但是知道,我抄了作业的说明,这样你就可以看到我想做什么了。你是怎么做的什么问题?
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    import java.util.stream.Collectors;
    
    public class EventSorter {
    
      public static void main(String[] args) {
        try {
          Path inPath = Paths.get("events.txt");
          Path outPath = Paths.get("sorted_events.txt");
          int event = 1892;
          Comparator<Integer> lastFirst = Comparator.<Integer>naturalOrder().reversed();
    
          List<Integer> events = Files.lines(inPath).map(Integer::valueOf).sorted(lastFirst).collect(Collectors.toCollection(ArrayList::new));
          int pos = Collections.binarySearch(events, event, lastFirst);
          if (pos < 0) {
            events.add(~pos, event);
          }
          Files.write(outPath, events.stream().map(Object::toString).collect(Collectors.toList()));
        } catch (IOException ex) {
          System.out.println(ex.getMessage());
        }
      }
    }
    
    1982
    1821
    1934
    1809
    
    1982
    1934
    1892
    1821
    1809