Skip to content

Instantly share code, notes, and snippets.

@A-pZ
Last active February 22, 2018 03:26
Show Gist options
  • Save A-pZ/261283d7f5307fb2131d0327d18d4251 to your computer and use it in GitHub Desktop.
Save A-pZ/261283d7f5307fb2131d0327d18d4251 to your computer and use it in GitHub Desktop.
テキストファイルを「半角スペースを区切り文字にして」「記号を全部省いた」単語一覧&出現数をMapにする
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla id ullamcorper neque, ac congue risus. Fusce viverra turpis eget cursus iaculis. Praesent cursus, sem nec congue fringilla, mi felis vehicula leo, quis feugiat ex tortor eu urna. Donec non sem rutrum sem aliquet pellentesque. Nam ultrices neque arcu, eget porta justo pellentesque a. Aenean fringilla neque vitae mi aliquet, eu imperdiet est vestibulum. Sed auctor turpis at lectus accumsan volutpat. Vestibulum aliquam elit eleifend ex tristique, et rhoncus lacus pharetra. Curabitur egestas suscipit nunc, eu condimentum sapien vulputate vel. Morbi pellentesque, massa posuere feugiat placerat, urna sapien feugiat magna, sed luctus enim justo id lacus.
Mauris dictum lacus erat, a malesuada enim consectetur nec. Donec eu rhoncus ligula, sit amet porta magna. Duis non vehicula enim, ac feugiat nunc. Sed at venenatis arcu, a tincidunt massa. Interdum et malesuada fames ac ante ipsum primis in faucibus. Etiam ut faucibus libero. Vivamus dictum aliquet rutrum. Donec a tincidunt mi, quis rhoncus eros. Fusce interdum eu lorem a imperdiet. Nunc vulputate neque eu orci lacinia, id tincidunt nibh auctor. Aenean sit amet nibh sed urna lacinia varius. Quisque justo nulla, porta nec felis in, blandit porta enim.
Sed tempor in leo at hendrerit. Curabitur pharetra tincidunt aliquam. Praesent dignissim ultrices felis, eget ullamcorper purus vehicula sed. Suspendisse rutrum posuere sem, eu gravida velit. Suspendisse eget vulputate arcu. Pellentesque eu nunc quis nisl egestas cursus vel ut libero. Proin pretium consectetur quam, a varius mauris tincidunt sit amet.
Cras rhoncus, libero a consectetur consectetur, turpis velit tempus velit, in condimentum lectus sem vitae neque. Donec erat est, euismod non felis in, varius ultricies mauris. Sed non eleifend nisi. Morbi tempus porta elit et interdum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Morbi pretium magna et mauris vestibulum varius. Sed dolor velit, finibus in posuere eu, ullamcorper at quam. Maecenas efficitur accumsan mauris, ut pulvinar erat. Praesent id vehicula odio. Integer blandit nibh est, nec varius eros pulvinar in. Integer luctus, odio vel porta rutrum, diam velit hendrerit quam, vel posuere augue nunc nec neque. Suspendisse a convallis lacus, id consectetur tellus. Aliquam volutpat, massa nec luctus mattis, orci lacus ultricies lorem, sed malesuada lacus nunc id massa. Duis ut rutrum risus, in varius purus. Aliquam sed malesuada tortor.
Sed quis massa vitae neque ultrices dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ut risus quis arcu laoreet sodales. Integer auctor tortor feugiat dolor laoreet varius. Donec nec dolor elit. Fusce commodo auctor tincidunt. Vivamus eros risus, sollicitudin eu quam sit amet, tempor tincidunt nisl. Aliquam dictum massa vel malesuada congue. Cras volutpat massa orci, ac commodo dui imperdiet at. Phasellus vel faucibus sem, mattis volutpat nisl. Nunc mollis et ligula id ultricies. Praesent feugiat magna nisl, eu elementum mauris tincidunt eget.
package com.github.a_pz.sample.java8sample;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.Arrays;
import java.util.concurrent.ConcurrentMap;
import java.util.stream.Collectors;
/**
* @author A-pZ
*
*/
public class TextSummary {
public String read() throws IOException {
String currentDir = Thread.currentThread().getContextClassLoader().getResource("").getPath();
File file = new File(currentDir + "target.txt");
return Files.readAllLines(file.toPath() ,StandardCharsets.UTF_8).stream().collect(Collectors.joining());
}
public void analyze(String target) {
String symbolRemovedTarget = target.replaceAll("[!-/]", "");
ConcurrentMap<String, Integer> map = Arrays.asList(symbolRemovedTarget.split(" "))
.stream()
.collect(Collectors.toConcurrentMap(key -> key, v -> 1, (i,j)-> i+j ));
map.forEach((key,value) -> System.out.println(key + ":" + value));
}
public static void main(String agv[]) throws Exception {
TextSummary summary = new TextSummary();
summary.analyze(summary.read());
}
}
@koji-k
Copy link

koji-k commented Jul 19, 2017

Groovyで同じようなコードにチャレンジしてみました!

import java.nio.charset.StandardCharsets;
public class TextSummary {

    public String read() throws IOException {
        String dir = System.getProperty("user.home")
        File file = new File("${dir}/Desktop/target.txt")
        file.readLines(StandardCharsets.UTF_8.toString()).join()
    }

    def analyze(String target) {
        target.replaceAll("[!-/]", "")
        .tokenize(" ")
        .inject([:].withDefault{0}) {Map map, String word ->
            map[word] += 1
            map
        }
    }
    
    public static void main(args) throws Exception {
        TextSummary summary = new TextSummary()
        println summary.analyze(summary.read())
    }
}

@A-pZ
Copy link
Author

A-pZ commented Feb 22, 2018

👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment