JAVA关于顺序数组数据去重,效率最高的方式是什么?

发布网友 发布时间:2022-04-22 21:47

我来回答

4个回答

热心网友 时间:2022-05-02 00:05

JAVA关于顺序数组数据去重,效率最高的方式是使用LinkedHashSet也是Set,set的特征就是对重复的元素只保存一个,LinkedHashSet只是在内部使用链表维护元素插入的顺序

package com.question;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.LinkedHashSet;

/**
 * delete the conflict String.
 * 
 * @author Xxx
 */
public class Q16 {
    
    /**
     * generate the text. 
     * 
     */
    public void init() {
        
        // write file
        OutputStream outputStream = null;
        try {
            outputStream = new FileOutputStream("C:/init.txt");
            for (int i = 0; i < 100000; i++) {
                for (int j = 0; j < 2; j++) {
                    outputStream.write(("Hello" + i).getBytes());
                    outputStream.write("\r\n".getBytes());
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (outputStream != null) {
                outputStream = null;
            }
        }
    }
    
    /**
     * filter the string.
     * 
     * @return
     */
    public LinkedHashSet<String> filter() {
        
        // create a LinkedHashSet project.
        LinkedHashSet<String> linkedHashSet = new LinkedHashSet<String>();
        try {
            
            // read the file.
            InputStream inputStream = new FileInputStream("C:/init.txt");
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String line = bufferedReader.readLine();
            
            // add the string to the LinkedHashSet
            while(line != null) {
                linkedHashSet.add(line);
                line = bufferedReader.readLine();
            }
            
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // return the result.
        return linkedHashSet;
    }
    
    @Deprecated
    public static void main(String[] args) {
        Q16 q16 = new Q16();
//        q16.init();
        LinkedHashSet<String> linkedHashSet = q16.filter();
        System.out.println(linkedHashSet.size());
    }
}

热心网友 时间:2022-05-02 01:23

遍历然后放到set里面,set是不允许重复的,所以自动去重复.
这是官方事先的,根据哈希值算的,效率应该是最高吧

热心网友 时间:2022-05-02 02:58

冒泡排序去重效率高

热心网友 时间:2022-05-02 04:49

用LinkedHashSet,逐行放入数据,如果重复会抛出异常,catch以后continue.

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com