用java编写程序,将数字由大到小降序排列输出
时间: 2023-05-18 08:06:52 浏览: 242
可以使用以下代码实现:
```java
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {5, 2, 9, 1, 5, 6};
Arrays.sort(nums);
for (int i = nums.length - 1; i >= 0; i--) {
System.out.print(nums[i] + " ");
}
}
}
```
这段代码将数组中的数字进行排序,并按照降序输出。
相关问题
用java写出,3.随机产生50个30到35的整数,统计每个数字出现的次数(TreeMap实现),输出 时按照数字的降序排列,并且统计出现次数最多的数字和它的次数。 PS:如果有两个数字出现的次数一样,则只需输出其中一个。
以下是使用Java编写的一个示例程序,它使用TreeMap存储生成的随机整数及其出现次数,并按降序排序:
```java
import java.util.*;
import java.util.concurrent.ThreadLocalRandom;
public class Main {
public static void main(String[] args) {
// 定义范围和数量
int lowerBound = 30;
int upperBound = 35;
int count = 50;
// 使用TreeMap存储键值对,键是数字,值是出现次数
Map<Integer, Integer> frequencyMap = new TreeMap<>(Collections.reverseOrder());
// 随机生成并统计数字出现次数
for (int i = 0; i < count; i++) {
int randomNum = ThreadLocalRandom.current().nextInt(lowerBound, upperBound + 1);
frequencyMap.put(randomNum, frequencyMap.getOrDefault(randomNum, 0) + 1);
}
// 输出结果
System.out.println("数字及其出现次数(降序):");
for (Map.Entry<Integer, Integer> entry : frequencyMap.entrySet()) {
System.out.println("数字: " + entry.getKey() + ", 出现次数: " + entry.getValue());
}
// 找出出现次数最多的数字及其次数
int maxFrequency = 0;
int mostFrequentNumber = -1;
for (Map.Entry<Integer, Integer> entry : frequencyMap.entrySet()) {
if (entry.getValue() > maxFrequency) {
maxFrequency = entry.getValue();
mostFrequentNumber = entry.getKey();
}
}
System.out.println("\n出现次数最多的数字: " + mostFrequentNumber + ", 出现次数: " + maxFrequency);
// 如果有多个数字出现次数相同,这里只输出一个,可以根据需求调整
}
}
```
这个程序首先创建了一个`TreeMap`,然后通过循环生成指定范围内的随机数,并更新该数字在map中的计数值。最后遍历map输出所有数字及其出现次数,并找出出现次数最多的数字。
请利用HDFS之JavaAPI将文件上传到HDFS, 使用MapReduce编写程序,打成Jar包在hadoop集群上运行,程序要求实现的功能是:分析出最大的10个数,并降序输出,保存在HDFS上。
首先,你需要安装并配置Hadoop环境,包括HDFS和MapReduce框架。然后,你可以通过以下步骤完成这个任务:
1. **添加依赖**:
- 导入Hadoop的Java API,通常在`com.hadoop.hdfs`和`org.apache.hadoop.mapreduce`包下。
```java
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
```
2. **创建Mapper类**:
- Mapper将输入分割成键值对,这里我们可以直接读取文本行作为键值对,键通常是Text类型,值是IntWritable类型。
```java
public class NumberCountMapper extends Mapper<Object, Text, IntWritable, Text> {
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
@Override
protected void map(Object key, Text value, Context context) throws IOException, InterruptedException {
// 解析输入文件中的数字
String[] numbers = value.toString().split(",");
for (String num : numbers) {
int number = Integer.parseInt(num);
word.set(Integer.toString(number));
context.write(one, word);
}
}
}
```
3. **创建Reducer类**:
- Reducer聚合键相关的值,这里我们需要找出最大值及其计数。
```java
public class TopNumbersReducer extends Reducer<IntWritable, Text, IntWritable, Text> {
private IntWritable result = new IntWritable();
private Text topNumber = new Text();
@Override
protected void reduce(IntWritable key, Iterable<Text> values, Context context) throws IOException, InterruptedException {
int sum = 0;
for (Text value : values) {
sum += key.get(); // 因为我们只传一个键,所以sum就是单个数值的计数
}
if (result.get() < sum) {
result.set(sum);
topNumber.set(value.toString()); // 取当前处理的最大数
}
context.write(result, topNumber);
}
}
```
4. **主函数**:
- 定义Job,设置输入、输出路径,并提交作业。
```java
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "Top Numbers");
job.setJarByClass(TopNumbersJob.class);
job.setMapperClass(NumberCountMapper.class);
job.setCombinerClass(Reducer.class); // 如果数据量小,可以考虑启用Combiner减少Shuffle过程
job.setReducerClass(TopNumbersReducer.class);
job.setOutputKeyClass(IntWritable.class);
job.setOutputValueClass(Text.class);
FileInputFormat.addInputPath(job, new Path(args[0])); // 输入文件路径
FileOutputFormat.setOutputPath(job, new Path(args[1])); // 输出文件路径
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
```
5. **打包jar和运行**:
- 将上述代码整合到一个名为`TopNumbersJob.java`的文件中,然后使用`hadoop jar`命令在集群上运行。
```sh
hadoop jar your-top-numbers-job.jar com.example.TopNumbersJob /input/file /output/path
```
6. **验证结果**:
- 从HDFS输出目录获取结果文件,内容应包含最大的10个数,按降序排列。
阅读全文