Java / 技術情報

Java ラムダ式 Tips

Listから重複排除

distinct() を使用する。

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class DistinctTest {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("b");

        list = list.stream().distinct().collect(Collectors.toList());

        System.out.println(list);
    }
}

実行結果

[a, b, c]

List<String>をList<Integer>に変換する

map() を使用する。

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

public class MapTest {
    public static void main(String[] args) {
	List<String> strlist = new ArrayList<>();
	strlist.add("10");
	strlist.add("20");
	strlist.add(null);
	strlist.add("30");

	List<Integer> intList = strlist.stream()
            .filter(str -> Objects.nonNull(str))
            .map(str -> Integer.parseInt(str))
            .collect(Collectors.toList());

	System.out.println(intList);
    }
}

実行結果

[10, 20, 30]

Listの各Dtoのプロパティに値を設定する

forEach() を使用する。

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import zzz.test.dto.MasterDto;

public class ForEachTest {
    public static void main(String[] args) {
	Calendar cal = Calendar.getInstance();
	cal.add(Calendar.YEAR, -1); // 1年前の日付
	Date date = cal.getTime();

	List<MasterDto> l = new ArrayList<>();

	MasterDto m1 = new MasterDto();
	m1.setId(1);
	m1.setCreateTime(date);
	m1.setUpdateTime(date);
	l.add(m1);

	MasterDto m2 = new MasterDto();
	m2.setId(2);
	m2.setCreateTime(date);
	m2.setUpdateTime(date);
	l.add(m2);

	l.forEach(m -> System.out.println(m.getUpdateTime()));

	// updateを現在日付で入れ替え
	Date now = new Date(); // 現在日付
	l.forEach(m -> m.setUpdateTime(now));
	l.forEach(m -> System.out.println(m.getUpdateTime()));
    }
}

実行結果

Wed Oct 26 18:31:22 JST 2022
Wed Oct 26 18:31:22 JST 2022
Thu Oct 26 18:31:22 JST 2023
Thu Oct 26 18:31:22 JST 2023

Leave a Reply

Your email address will not be published.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)