是否可以在arraylist或hashmap中获取所有不同的值?
让我们说例如我在arraylist上有这样的元素:
123, 123, 456, 123, 456, 000
在HashMap中:
123, test1
123, test2
456, test3
123, test4
000, test5
答案 0 :(得分:4)
键在HashMap中应该是唯一的。如果您选择重复键,则现有键值将替换为新值。
如果您想避免重复,请使用Set
。
答案 1 :(得分:0)
HashMaps不允许重复键。如果您输入已经存在的密钥,则将其替换为新密钥。
答案 2 :(得分:0)
如果您使用的是Map
,根据定义,这些键将是唯一的。对于List
的实现,有几个选项。对于Java 5到Java 7
public <T> List<T> removeDuplicates(List<T> list){
Set<T> set = new LinkedHashSet<>(list);
return new ArrayList<>(set);
}
使用Java 8
public <T> List<T> removeDuplicatesJava8(List<T> list){
return list.stream().distinct().collect(Collectors.toList());
}
答案 3 :(得分:0)
如果您想将多个值映射到某个键,则可以使用Map<K, V[]>
(或public static void main(String[] args) {
Map<Integer, List<String>> data = new HashMap<>();
add(data, 123, "test1");
add(data, 123, "test2");
add(data, 456, "test3");
add(data, 123, "test4");
add(data, 0, "test5");
data.forEach((k, v) -> System.out.println(k + " -> " + v));
}
static <K, V> void add(Map<K, List<V>> listMap, K key, V value) {
List<V> values = listMap.get(key);
if(values == null) {
values = new ArrayList<V>();
listMap.put(key, values);
}
values.add(value);
}
):
<强>代码:强>
0 -> [test5]
456 -> [test3]
123 -> [test1, test2, test4]
<强>输出:强>
set java_exe=%JAVA_HOME%\bin\java.exe
答案 4 :(得分:0)
要从List
获取Set<Object> set = new HashSet<Object>(nonUniqueList);
个唯一元素,您可以执行此操作
String book = request.getParameter("book");
for(Book book : arrBook){
if(radio.equals(book.getBookid())){
out.prinlnt(book.getBookid()+ " book ID was selected...");
break;
}
}